public void TestMainMenuHelp() { using (Application installerEditor = Application.Launch(InstallerEditorExeUtils.Executable)) { Window mainWindow = installerEditor.GetWindow("Installer Editor", InitializeOption.NoCache); Menu mainMenuHelp = UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Help"); mainMenuHelp.Click(); Assert.IsTrue(mainMenuHelp.ChildMenus.Find("Users Guide").Enabled); Assert.IsTrue(mainMenuHelp.ChildMenus.Find("Home Page").Enabled); Assert.IsTrue(mainMenuHelp.ChildMenus.Find("About").Enabled); } }
public void DumpControls() { InstallerEditorExeUtils.RunOptions options = new InstallerEditorExeUtils.RunOptions(); using (Process p = InstallerEditorExeUtils.Detach(options)) { Thread.Sleep(2000); p.WaitForInputIdle(); UIAutomation.DumpControl(AutomationElement.FromHandle(p.MainWindowHandle)); p.CloseMainWindow(); p.WaitForExit(); } }
public void TestMainMenuEdit() { using (Application installerEditor = Application.Launch(InstallerEditorExeUtils.Executable)) { Window mainWindow = installerEditor.GetWindow("Installer Editor", InitializeOption.NoCache); Menu mainMenuEdit = UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit"); mainMenuEdit.Click(); Assert.IsFalse(mainMenuEdit.ChildMenus.Find("Add").Enabled); Assert.IsFalse(mainMenuEdit.ChildMenus.Find("Move").Enabled); Assert.IsFalse(mainMenuEdit.ChildMenus.Find("Expand All").Enabled); Assert.IsFalse(mainMenuEdit.ChildMenus.Find("Collapse All").Enabled); Assert.IsFalse(mainMenuEdit.ChildMenus.Find("Delete").Enabled); } }
public void TestMainMenu() { using (Application installerEditor = Application.Launch(InstallerEditorExeUtils.Executable)) { Window mainWindow = installerEditor.GetWindow("Installer Editor", InitializeOption.NoCache); Menus mainMenu = UIAutomation.Find <MenuBar>(mainWindow, "Application").TopLevelMenu; Assert.AreEqual(5, mainMenu.Count); Assert.AreEqual("File", mainMenu[0].Name); Assert.AreEqual("Edit", mainMenu[1].Name); Assert.AreEqual("View", mainMenu[2].Name); Assert.AreEqual("Tools", mainMenu[3].Name); Assert.AreEqual("Help", mainMenu[4].Name); } }
public void TestAddSetupConfigurationLicenseAgreement() { using (Application installerEditor = Application.Launch(InstallerEditorExeUtils.Executable)) { Window mainWindow = installerEditor.GetWindow("Installer Editor", InitializeOption.NoCache); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File", "New").Click(); Tree configurationTree = UIAutomation.Find <Tree>(mainWindow, "configurationTree"); Assert.AreEqual(1, configurationTree.Nodes.Count); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Configurations", "Setup Configuration").Click(); TreeNode configurationNode = configurationTree.SelectedNode; UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Controls", "License Agreement").Click(); Assert.AreEqual("I have read and ...", configurationTree.SelectedNode.Name); } }
public void TestAddDownloadDialog() { using (Application installerEditor = Application.Launch(InstallerEditorExeUtils.Executable)) { Window mainWindow = installerEditor.GetWindow("Installer Editor", InitializeOption.NoCache); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File", "New").Click(); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Configurations", "Setup Configuration").Click(); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Components", "Msi Component").Click(); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Download", "Download Dialog").Click(); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Download", "Download File").Click(); Tree configurationTree = UIAutomation.Find <Tree>(mainWindow, "configurationTree"); Assert.AreEqual("Download File", configurationTree.SelectedNode.Name); } }
public void TestMoveUpMoveDownConfiguration() { using (Application installerEditor = Application.Launch(InstallerEditorExeUtils.Executable)) { Window mainWindow = installerEditor.GetWindow("Installer Editor", InitializeOption.NoCache); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File", "New").Click(); Tree configurationTree = mainWindow.Get <Tree>("configurationTree"); TreeNode configFileNode = configurationTree.SelectedNode; UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Configurations", "Setup Configuration").Click(); configFileNode.Select(); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Configurations", "Web Configuration").Click(); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Move", "Up").Click(); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Move", "Down").Click(); } }
public void TestMainMenuFile() { using (Application installerEditor = Application.Launch(InstallerEditorExeUtils.Executable)) { Window mainWindow = installerEditor.GetWindow("Installer Editor", InitializeOption.NoCache); Menu mainMenuFile = UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File"); mainMenuFile.Click(); Assert.IsTrue(mainMenuFile.ChildMenus.Find("New").Enabled); Assert.IsTrue(mainMenuFile.ChildMenus.Find("Open...").Enabled); Assert.IsFalse(mainMenuFile.ChildMenus.Find("Close").Enabled); Assert.IsFalse(mainMenuFile.ChildMenus.Find("Save").Enabled); Assert.IsFalse(mainMenuFile.ChildMenus.Find("Save As...").Enabled); Assert.IsFalse(mainMenuFile.ChildMenus.Find("Close").Enabled); Assert.IsFalse(mainMenuFile.ChildMenus.Find("Edit With Notepad").Enabled); Assert.IsFalse(mainMenuFile.ChildMenus.Find("Create Exe...").Enabled); Assert.IsTrue(mainMenuFile.ChildMenus.Find("Exit").Enabled); } }
public void TestRefresh() { using (Application installerEditor = Application.Launch(InstallerEditorExeUtils.Executable)) { Window mainWindow = installerEditor.GetWindow("Installer Editor", InitializeOption.NoCache); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File", "New").Click(); Tree configurationTree = mainWindow.Get <Tree>("configurationTree"); TreeNode configFileNode = configurationTree.SelectedNode; UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Configurations", "Setup Configuration").Click(); configFileNode.Select(); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Configurations", "Web Configuration").Click(); configFileNode.Select(); configFileNode.Collapse(); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("View", "Refresh").Click(); configFileNode = configurationTree.SelectedNode; Assert.IsTrue(configFileNode.IsExpanded()); } }
public void TestNewConfiguration() { using (Application installerEditor = Application.Launch(InstallerEditorExeUtils.Executable)) { Window mainWindow = installerEditor.GetWindow("Installer Editor", InitializeOption.NoCache); UIAutomation.Find <MenuBar>(mainWindow, "Application").TopLevelMenu.Find("File").Click(); UIAutomation.Find <MenuBar>(mainWindow, "Application").TopLevelMenu.Find("File").ChildMenus.Find("New").Click(); // status says "Ready" StatusStrip statusStrip = UIAutomation.Find <StatusStrip>(mainWindow, "statusStrip"); WinFormTextBox statusLabel = (WinFormTextBox)statusStrip.Items[0]; Assert.AreEqual("Ready", statusLabel.Text); // configuration tree has one node Tree configurationTree = UIAutomation.Find <Tree>(mainWindow, "configurationTree"); Assert.AreEqual(1, configurationTree.Nodes.Count); Assert.AreEqual(0, configurationTree.SelectedNode.Nodes.Count); Assert.AreEqual("Config File", configurationTree.SelectedNode.Text); } }
public void TestAddSetupConfigurationControls() { using (Application installerEditor = Application.Launch(InstallerEditorExeUtils.Executable)) { Window mainWindow = installerEditor.GetWindow("Installer Editor", InitializeOption.NoCache); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File", "New").Click(); Tree configurationTree = UIAutomation.Find <Tree>(mainWindow, "configurationTree"); Assert.AreEqual(1, configurationTree.Nodes.Count); string[] controlMenuItems = { "Label", "Edit", "Checkbox", "Browse", "Hyperlink" }; UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Configurations", "Setup Configuration").Click(); TreeNode configurationNode = configurationTree.SelectedNode; foreach (string controlMenuItem in controlMenuItems) { configurationNode.Select(); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Controls", controlMenuItem).Click(); Assert.AreEqual("Lorem ipsum", configurationTree.SelectedNode.Name); } } }
public void TestEditWithNotepad() { ConfigFile configFile = new ConfigFile(); SetupConfiguration setupConfiguration = new SetupConfiguration(); configFile.Children.Add(setupConfiguration); string configFileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() + ".xml"); Console.WriteLine("Writing '{0}'", configFileName); configFile.SaveAs(configFileName); try { ProcessStartInfo pi = new ProcessStartInfo(InstallerEditorExeUtils.Executable, "\"" + configFileName + "\""); using (Application installerEditor = Application.Launch(pi)) { Window mainWindow = installerEditor.GetWindow( string.Format("Installer Editor - {0}", configFileName), InitializeOption.NoCache); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File", "Edit With Notepad").Click(); Thread.Sleep(1000); string windowText = string.Format("{0} -", Path.GetFileName(configFileName)); string moduleName = "NOTEPAD.EXE"; Console.WriteLine(windowText); bool foundNotepad = false; foreach (Process p in Process.GetProcesses()) { if ((p.MainWindowTitle.StartsWith(windowText)) && (p.MainModule.ModuleName == moduleName)) { Application notepad = Application.Attach(p); notepad.GetWindow(p.MainWindowTitle, InitializeOption.NoCache).Close(); foundNotepad = true; break; } } Assert.IsTrue(foundNotepad); } } finally { File.Delete(configFileName); } }
public void TestSaveAsConfiguration() { string configFileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() + ".xml"); try { using (Application installerEditor = Application.Launch(InstallerEditorExeUtils.Executable)) { Window mainWindow = installerEditor.GetWindow("Installer Editor", InitializeOption.NoCache); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File", "New").Click(); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("Edit", "Add", "Configurations", "Setup Configuration").Click(); Menu mainMenuFile = UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File"); mainMenuFile.Click(); Assert.IsFalse(mainMenuFile.ChildMenus.Find("Save").Enabled); mainMenuFile.ChildMenus.Find("Save As...").Click(); Window openWindow = mainWindow.ModalWindow("Save As"); TextBox filenameTextBox = openWindow.Get <TextBox>("File name:"); filenameTextBox.Text = configFileName; openWindow.KeyIn(KeyboardInput.SpecialKeys.RETURN); openWindow.WaitWhileBusy(); mainWindow.WaitWhileBusy(); Assert.IsTrue(File.Exists(configFileName)); Assert.IsTrue(UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File", "Save").Enabled); StatusStrip statusStrip = UIAutomation.Find <StatusStrip>(mainWindow, "statusStrip"); WinFormTextBox statusLabel = (WinFormTextBox)statusStrip.Items[0]; Assert.AreEqual(string.Format("Written {0}", configFileName), statusLabel.Text); ConfigFile savedConfigFile = new ConfigFile(); savedConfigFile.Load(configFileName); Assert.AreEqual(1, savedConfigFile.Children.Count); } } finally { if (File.Exists(configFileName)) { File.Delete(configFileName); } } }
public void TestMakeExe() { ConfigFile configFile = new ConfigFile(); SetupConfiguration setupConfiguration = new SetupConfiguration(); string configFileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() + ".xml"); Console.WriteLine("Writing '{0}'", configFileName); configFile.SaveAs(configFileName); try { ProcessStartInfo pi = new ProcessStartInfo(InstallerEditorExeUtils.Executable, "\"" + configFileName + "\""); using (Application installerEditor = Application.Launch(pi)) { Window mainWindow = installerEditor.GetWindow(string.Format("Installer Editor - {0}", configFileName), InitializeOption.NoCache); // create exe dialog UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File", "Create Exe...").Click(); Window createExeWindow = mainWindow.ModalWindow("Create Executable"); Console.WriteLine(dotNetInstallerExeUtils.Executable); UIAutomation.Find <TextBox>(createExeWindow, "txtTemplateFile").BulkText = dotNetInstallerExeUtils.Executable; UIAutomation.Find <Button>(createExeWindow, "btMake").Click(); // make opens a Save As dialog string outputFilename = Path.Combine(Path.GetTempPath(), string.Format("{0}.exe", Guid.NewGuid())); Window saveAsWindow = createExeWindow.ModalWindow("Save As"); TextBox filenameTextBox = saveAsWindow.Get <TextBox>("File name:"); filenameTextBox.BulkText = outputFilename; saveAsWindow.KeyIn(KeyboardInput.SpecialKeys.RETURN); saveAsWindow.WaitWhileBusy(); mainWindow.WaitWhileBusy(); Assert.IsTrue(File.Exists(outputFilename)); File.Delete(outputFilename); } } finally { File.Delete(configFileName); } }
public void TestRunFileIsADirectory() { //TODO: High: ok button on error window is not automatically clicked on windows 7 ultimate x64 InstallerEditorExeUtils.RunOptions options = new InstallerEditorExeUtils.RunOptions(); options.args = Environment.SystemDirectory; ProcessStartInfo pi = new ProcessStartInfo(InstallerEditorExeUtils.Executable, options.CommandLineArgs); using (Application installerEditor = Application.Launch(pi)) { List <Window> windows = installerEditor.GetWindows(); Assert.AreEqual(windows.Count, 2); Window errorWindow = windows[1]; Assert.IsNotNull(errorWindow); Assert.AreEqual(errorWindow.Title, "Error"); Button exitButton = UIAutomation.Find <Button>(errorWindow, "OK"); exitButton.Click(); while (!installerEditor.HasExited) { Thread.Sleep(100); } Assert.AreEqual(-3, installerEditor.Process.ExitCode); } }
public void TestOpenCloseConfiguration() { ConfigFile configFile = new ConfigFile(); SetupConfiguration setupConfiguration = new SetupConfiguration(); configFile.Children.Add(setupConfiguration); string configFileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() + ".xml"); Console.WriteLine("Writing '{0}'", configFileName); configFile.SaveAs(configFileName); try { using (Application installerEditor = Application.Launch(InstallerEditorExeUtils.Executable)) { Window mainWindow = installerEditor.GetWindow("Installer Editor", InitializeOption.NoCache); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File", "Open...").Click(); Window openWindow = mainWindow.ModalWindow("Open"); TextBox filenameTextBox = openWindow.Get <TextBox>("File name:"); filenameTextBox.Text = configFileName; openWindow.KeyIn(KeyboardInput.SpecialKeys.RETURN); mainWindow.WaitWhileBusy(); Tree configurationTree = UIAutomation.Find <Tree>(mainWindow, "configurationTree"); Assert.AreEqual("Config File", configurationTree.SelectedNode.Name); StatusStrip statusStrip = UIAutomation.Find <StatusStrip>(mainWindow, "statusStrip"); WinFormTextBox statusLabel = (WinFormTextBox)statusStrip.Items[0]; Assert.AreEqual(string.Format("Loaded {0}", configFileName), statusLabel.Text); UIAutomation.Find <MenuBar>(mainWindow, "Application").MenuItem("File", "Close").Click(); Assert.AreEqual(0, configurationTree.Nodes.Count); Assert.AreEqual("Ready", statusLabel.Text); } } finally { File.Delete(configFileName); } }