protected override void StartDynamo(TestSessionConfiguration testConfig) { try { UpdateSystemPathForProcess(); // create the transaction manager object TransactionManager.SetupManager(new AutomaticTransactionStrategy()); // Note that there is another data member pathResolver in base class // SystemTestBase. That pathResolver will be used only in StartDynamo // of the base class, here a local instance of pathResolver is used. // var commandData = new DynamoRevitCommandData(RevitTestExecutive.CommandData); var userDataFolder = Path.Combine(Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData), "Dynamo", "Dynamo Revit"); var commonDataFolder = Path.Combine(Environment.GetFolderPath( Environment.SpecialFolder.CommonApplicationData), "Autodesk", "RVT " + commandData.Application.Application.VersionNumber, "Dynamo"); // Set Path Resolver's user data folder and common data folder with DynamoRevit runtime. var pathResolverParams = new TestPathResolverParams() { UserDataRootFolder = userDataFolder, CommonDataRootFolder = commonDataFolder }; RevitTestPathResolver revitTestPathResolver = new RevitTestPathResolver(pathResolverParams); revitTestPathResolver.InitializePreloadedLibraries(); // Get the preloaded DynamoRevit Custom Nodes, and Add them to Preload Libraries. var preloadedLibraries = new List <string>(); GetLibrariesToPreload(preloadedLibraries); if (preloadedLibraries.Any()) { foreach (var preloadedLibrary in preloadedLibraries) { if (Directory.Exists(preloadedLibrary)) { revitTestPathResolver.AddNodeDirectory(preloadedLibrary); } else if (File.Exists(preloadedLibrary)) { revitTestPathResolver.AddPreloadLibraryPath(preloadedLibrary); } } } // Init DynamoTestPath to get DynamoSettings.xml which under user data folder PreferenceSettings.DynamoTestPath = string.Empty; //preload ASM and instruct dynamo to load that version of libG. var requestedLibGVersion = DynamoRevit.PreloadAsmFromRevit(); DynamoRevit.RevitDynamoModel = RevitDynamoModel.Start( new RevitDynamoModel.RevitStartConfiguration() { StartInTestMode = true, GeometryFactoryPath = DynamoRevit.GetGeometryFactoryPath(testConfig.DynamoCorePath, requestedLibGVersion), DynamoCorePath = testConfig.DynamoCorePath, PathResolver = revitTestPathResolver, Context = DynamoRevit.GetRevitContext(commandData), SchedulerThread = new TestSchedulerThread(), PackageManagerAddress = "https://www.dynamopackages.com", ExternalCommandData = commandData, ProcessMode = RevitTaskProcessMode }); Model = DynamoRevit.RevitDynamoModel; this.ViewModel = DynamoRevitViewModel.Start( new DynamoViewModel.StartConfiguration() { DynamoModel = DynamoRevit.RevitDynamoModel, }); var vm3D = ViewModel.Watch3DViewModels.FirstOrDefault(vm => vm is RevitWatch3DViewModel); if (vm3D != null) { vm3D.Active = false; } // Because the test framework does not work in the idle thread. // We need to trick Dynamo into believing that it's in the idle // thread already. IdlePromise.InIdleThread = true; } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } }