Adds support for opening QuickStart and Users blades, multiple APIs to support the canpinAllBladeParts test and support for waiting for notifications

This commit is contained in:
Julio Casal 2015-10-01 22:47:44 -07:00
parent ef32bff4d1
commit 5fb76e8991
2 changed files with 125 additions and 12 deletions

View File

@ -17,11 +17,11 @@ var extensionUrl = 'https://localhost:44300/';
var voidPromise: Q.Promise<void>;
var boolPromise: Q.Promise<boolean>;
var anyPromise: Q.Promise<any>;
var stringPromise: Q.Promise<string>;
var summaryBlade = new testFx.Blades.Blade(resourceName);
function TestPortal() {
function TestPortal() {
testFx.portal.portalContext.signInEmail = userName;
testFx.portal.portalContext.signInPassword = password;
testFx.portal.portalContext.features = [{ name: "greatfeature", value: "true" }];
@ -35,11 +35,17 @@ function TestPortal() {
var stringPromise = testFx.portal.takeScreenshot("TestPortal");
var stringArrayPromise = testFx.portal.getBrowserLogs(testFx.LogLevel.All);
anyPromise = testFx.portal.waitUntilElementDoesNotContainAttribute(testFx.Locators.By.className('part'), 'class', 'invalid');
voidPromise = testFx.portal.goHome();
boolPromise = testFx.portal.waitForElementVisible(summaryBlade.getLocator());
var anyArrayPromise = testFx.portal.waitForElementsLocated(summaryBlade.getLocator());
var voidPromise = testFx.portal.executeScript<void>("console.log('hello from script');");
stringPromise = testFx.portal.getCurrentUrl();
}
function TestBlades() {
var blade = new testFx.Blades.Blade(resourceName);
blade.clickCommand('Delete');
var bladePromise = blade.clickCommand('Delete');
var tilesPromise = blade.getTiles();
var createBlade = new testFx.Blades.CreateBlade(bladeTitle);
voidPromise = createBlade.actionBar.createButton.click();
@ -52,6 +58,11 @@ function TestBlades() {
var specPickerBlade = new testFx.Blades.SpecPickerBlade(bladeTitle);
specPickerBlade.pickSpec('S2');
var quickStartBlade = new testFx.Blades.QuickStartBlade();
voidPromise = quickStartBlade.clickLink('Learn more');
var usersBlade = new testFx.Blades.UsersBlade();
}
function TestParts() {
@ -60,12 +71,21 @@ function TestParts() {
boolPromise = part.isSelected();
boolPromise = part.waitUntilLoaded();
boolPromise = part.isLoaded();
boolPromise = part.isClickable();
boolPromise = part.hasError();
var resourceSummary = new testFx.Parts.ResourceSummaryPart(summaryBlade.getLocator());
var count = resourceSummary.properties.length;
voidPromise = resourceSummary.quickStartHotSpot.click();
voidPromise = resourceSummary.accessHotSpot.click();
var pricingTier = new testFx.Parts.PricingTierPart(summaryBlade.getLocator());
voidPromise = pricingTier.click();
var tile = new testFx.Parts.Tile(summaryBlade.getLocator());
voidPromise = tile.tryPin();
var part: testFx.Parts.Part = tile.getPart();
voidPromise = tile.waitUntilLoaded();
}
function TestControls() {
@ -78,6 +98,9 @@ function TestControls() {
var textField = new testFx.Controls.TextField(summaryBlade.getLocator(), "Resource name");
var textFieldPromise = textField.sendKeys(resourceName);
var hotSpot = new testFx.Controls.HotSpot(summaryBlade.getLocator());
boolPromise = hotSpot.isSelected();
}
function TestActionBars() {
@ -90,4 +113,30 @@ function TestActionBars() {
var pickerBar = new testFx.ActionBars.PickerActionBar(summaryBlade.getLocator());
voidPromise = pickerBar.selectButton.click();
}
function TestCommands() {
var menu = new testFx.Commands.ContextMenu();
var itemName = "Pin";
boolPromise = menu.hasItem(itemName);
voidPromise = menu.clickItem(itemName);
var item = new testFx.Commands.ContextMenuItem(menu.getLocator(), itemName);
voidPromise = item.click();
}
function TestStartBoard() {
var board = new testFx.StartBoard();
var tilesPromise = board.getTiles();
}
function TestNotifications() {
var menu = new testFx.Notifications.NotificationsMenu();
menu.waitForNewNotification("success").then((notification) => {
stringPromise = notification.getDescription();
});
}
function TestTests() {
boolPromise = testFx.Tests.Parts.canPinAllBladeParts(resourceId, bladeTitle);
}

View File

@ -76,6 +76,7 @@ declare module MsPortalTestFx {
constructor(title: string);
clickCommand(commandText: string): Q.Promise<Blade>;
getTiles(): Q.Promise<Parts.Tile[]>;
}
export class CreateBlade extends Blade {
@ -95,6 +96,15 @@ declare module MsPortalTestFx {
export class SpecPickerBlade extends Blade {
pickSpec(specCode: string): Q.Promise<void>;
}
export class QuickStartBlade extends Blade {
constructor();
clickLink(linkText: string): Q.Promise<void>;
}
export class UsersBlade extends Blade {
constructor();
}
}
export module Controls {
@ -127,12 +137,17 @@ declare module MsPortalTestFx {
export class TextField extends FormElement {
constructor(parentLocator?: Locators.Locator, label?: string, baseLocator?: Locators.Locator);
sendKeys(...var_args: string[]): Q.Promise<TextField>;
sendKeys(...var_args: string[]): Q.Promise<void>;
}
export class ResourceFilterTextField extends TextField {
constructor(parentLocator?: Locators.Locator);
}
export class HotSpot extends PortalElement {
constructor(parentLocator?: Locators.Locator, baseLocator?: Locators.Locator);
isSelected(): Q.Promise<boolean>;
}
}
export module Parts {
@ -143,6 +158,8 @@ declare module MsPortalTestFx {
isSelected(): Q.Promise<boolean>;
isLoaded(): Q.Promise<boolean>;
waitUntilLoaded(timeout?: number): Q.Promise<boolean>;
isClickable(): Q.Promise<boolean>;
hasError(): Q.Promise<boolean>;
}
export class PartProperty extends MsPortalTestFx.PortalElement {
@ -155,6 +172,8 @@ declare module MsPortalTestFx {
export class ResourceSummaryPart extends Part {
public properties: Array<PartProperty>;
public resourceGroupProperty: PartProperty;
public quickStartHotSpot: Controls.HotSpot;
public accessHotSpot: Controls.HotSpot;
constructor(parentLocator?: Locators.Locator);
}
@ -166,17 +185,57 @@ declare module MsPortalTestFx {
public progressLocator: Locators.Locator;
constructor(parentLocator?: Locators.Locator);
tryPin(): Q.Promise<void>;
getPart(): Part;
waitUntilLoaded(timeout?: number): Q.Promise<void>;
}
}
export module Commands {
export class ContextMenu extends PortalElement {
constructor();
public hasItem(text: string): Q.Promise<boolean>;
public clickItem(text: string): Q.Promise<void>;
}
export class ContextMenuItem extends PortalElement {
constructor(parentLocator: Locators.Locator, text?: string);
}
}
export module Notifications {
export class Notification extends PortalElement {
constructor();
getTitle(): Q.Promise<string>;
getDescription(): Q.Promise<string>;
}
export class NotificationsMenu extends PortalElement {
constructor();
waitForNewNotification(title?: string, description?: string, timeout?: number): Q.Promise<Notification>;
}
}
export module Tests {
export module Parts {
export function canPinAllBladeParts(targetBladeDeepLink: string, targetBladeTitle: string, timeout?: number): Q.Promise<boolean>;
}
}
export class PortalElement {
protected baseLocator: Locators.Locator;
public baseLocator: Locators.Locator;
protected parentLocator: Locators.Locator;
constructor(baseLocator: Locators.Locator, parentLocator?: Locators.Locator);
getLocator(): Locators.Locator;
click(): Q.Promise<void>;
rightClick(): Q.Promise<void>;
getAttribute(attributeName: string): Q.Promise<string>;
sendKeys(...var_args: string[]): Q.Promise<void>;
getText(): Q.Promise<string>;
isPresent(): Q.Promise<boolean>;
isElementPresent(subLocator: Locators.Locator): Q.Promise<boolean>;
isDisplayed(): Q.Promise<boolean>;
getLocator(): Locators.Locator;
}
export interface TestExtension {
@ -216,23 +275,23 @@ declare module MsPortalTestFx {
export class Portal {
portalContext: PortalContext;
click(locator: Locators.Locator): Q.Promise<void>;
sendKeys(locator: Locators.Locator, ...var_args: string[]): Q.Promise<void>
getText(locator: Locators.Locator): Q.Promise<string>;
goHome(timeout?: number): Q.Promise<void>;
openGalleryCreateBlade(galleryPackageName: string, bladeTitle: string, timeout?: number): Q.Promise<Blades.CreateBlade>;
openBrowseBlade(resourceProvider: string, resourceType: string, bladeTitle: string, timeout?: number): Q.Promise<Blades.BrowseResourceBlade>;
openResourceBlade(resourceId: string, bladeTitle: string, timeout?: number): Q.Promise<Blades.Blade>;
navigateToDeepLink(deepLink: string, timeout?: number): Q.Promise<any>;
getAttribute(locator: Locators.Locator, attributeName: string, timeout?: number): Q.Promise<string>;
waitForElementVisible(locator: Locators.Locator, timeout?: number): Q.Promise<boolean>;
waitForElementNotVisible(locator: Locators.Locator, timeout?: number): Q.Promise<boolean>;
waitUntilElementContainsAttribute(locator: Locators.Locator, attributeName: string, attributeValue: string, timeout?: number): Q.Promise<any>;
waitUntilElementDoesNotContainAttribute(locator: Locators.Locator, attributeName: string, attributeValue: string, timeout?: number): Q.Promise<any>;
waitForElementLocated(locator: Locators.Locator, timeout?: number): Q.Promise<any>;
waitForElementsLocated(locator: Locators.Locator, timeout?: number): Q.Promise<any[]>;
takeScreenshot(filePrefix?: string): Q.Promise<string>;
goHome(timeout?: number): Q.Promise<void>;
getBrowserLogs(level: LogLevel): Q.Promise<string[]>;
applyFeature(name: string, value: string): void;
executeScript<T>(script: string): Q.Promise<T>;
applyFeature(name: string, value: string): void;
getCurrentUrl(): Q.Promise<string>;
quit(): Q.Promise<any>;
}
@ -240,6 +299,11 @@ declare module MsPortalTestFx {
clickUntrustedExtensionsOkButton(): Q.Promise<void>;
}
export class StartBoard extends PortalElement {
constructor();
getTiles(): Q.Promise<Parts.Tile[]>;
}
export var portal: Portal;
}