public TestResult VerifyCloseOnProjectOpenCheckbox(Application application, Log log)
{
const string prefix = "Close welcome tab on project open";
var result = new TestResult();
var assert = new Assert(result, log);
try
{
var startPage = TabProxies.GetStartPageTabItem(application, log);
if (startPage == null)
{
log.Info(prefix, "Opening start page.");
MenuProxies.SwitchToStartPageViaViewStartPageMenuItem(application, log);
}
startPage = TabProxies.GetStartPageTabItem(application, log);
if (startPage == null)
{
var message = "Failed to get the start page.";
log.Error(prefix, message);
result.AddError(prefix + " - " + message);
return result;
}
try
{
if (!startPage.IsSelected)
{
log.Info(prefix, "Setting focus to start page.");
startPage.Select();
}
}
catch (Exception e)
{
var message = string.Format(
CultureInfo.InvariantCulture,
"Failed to select the start page tab. Error was: {0}",
e);
log.Error(prefix, message);
result.AddError(prefix + " - " + message);
return result;
}
// Check 'keep open' flag
WelcomePageControlProxies.UncheckCloseWelcomePageOnProjectOpen(application, log);
// New button
var newProjectSearchCriteria = SearchCriteria
.ByAutomationId(WelcomeViewAutomationIds.NewProject);
var newProjectButton = (Button)startPage.Get(newProjectSearchCriteria);
if (newProjectButton == null)
{
var message = "Failed to get the 'New Project' button.";
log.Error(prefix, message);
result.AddError(prefix + " - " + message);
return result;
}
newProjectButton.Click();
// Check that the start page hasn't been closed
var currentStartPage = TabProxies.GetStartPageTabItem(application, log);
assert.IsNotNull(currentStartPage, prefix + " - Start page does not exist after opening project");
assert.IsFalse(currentStartPage.IsSelected, prefix + " - Start page is selected after opening project");
var currentProjectPage = TabProxies.GetProjectPageTabItem(application, log);
assert.IsNotNull(currentProjectPage, prefix + " - Project page does not exist after opening project");
assert.IsTrue(currentProjectPage.IsSelected, prefix + " - Project page is not selected after opening project");
// Check that File - close has been enabled
var fileCloseMenu = MenuProxies.GetFileCloseMenuItem(application, log);
assert.IsTrue(fileCloseMenu.Enabled, prefix + " - File - Close menu is not enabled");
// HACK: It seems that the File menu stays open when we check the File - close menu item
var fileMenu = MenuProxies.GetFileMenuItem(application, log);
if (fileMenu == null)
{
var message = "Failed to get the file menu.";
log.Error(prefix, message);
result.AddError(prefix + " - " + message);
return result;
}
if (fileMenu.IsFocussed)
{
fileMenu.Click();
}
// Close the project via the close button on the tab page
TabProxies.CloseProjectPageTab(application, log);
WelcomePageControlProxies.CheckCloseWelcomePageOnProjectOpen(application, log);
// New button
newProjectButton.Click();
// Check that the start page has been closed
currentStartPage = TabProxies.GetStartPageTabItem(application, log);
assert.IsNull(currentStartPage, prefix + " - Start page exists after opening project");
// Close the project via the close button on the tab page
TabProxies.CloseProjectPageTab(application, log);
WelcomePageControlProxies.UncheckCloseWelcomePageOnProjectOpen(application, log);
}
catch (RegressionTestFailedException e)
{
var message = string.Format(
CultureInfo.InvariantCulture,
"Failed with exception. Error: {0}",
e);
log.Error(prefix, message);
result.AddError(prefix + " - " + message);
}
return result;
}