示例#1
0
        public IList <TestFileSummary> Execute(TestOptions testOptions,
                                               TestContext testContext,
                                               TestExecutionMode testExecutionMode,
                                               ITestMethodRunnerCallback callback)
        {
            string runnerPath        = fileProbe.FindFilePath(testContext.TestRunner);
            string fileUrl           = BuildHarnessUrl(testContext);
            string chromeBrowserPath = testContext.TestFileSettings?.EngineOptions?.ChromeBrowserPath;
            string runnerArgs        = BuildRunnerArgs(testOptions, testContext, fileUrl, runnerPath, testExecutionMode, isRunningElevated, chromeBrowserPath);

            var streamTimeout = ((testContext.TestFileSettings.TestFileTimeout ?? testOptions.TestFileTimeoutMilliseconds) + 500).GetValueOrDefault(); // Add buffer to timeout to account for serialization

            TestCaseStreamReadResult streamProcessor(ProcessStreamStringSource processStream) => readerFactory.Create().Read(processStream, testOptions, testContext, callback);

            var environmentVariables = BuildEnvironmentVariables();
            var processResult        = processTools.RunExecutableAndProcessOutput(headlessBrowserPath, runnerArgs, streamProcessor, streamTimeout, environmentVariables);

            HandleTestProcessExitCode(testContext, processResult.ExitCode, testContext.FirstInputTestFile, processResult.Model.TestFileSummaries.Select(x => x.Errors).FirstOrDefault(), callback);

            return(processResult.Model.TestFileSummaries);
        }