Merge pull request #5905 from julioct/master

Add definitions for msportalfx-test
This commit is contained in:
Masahiro Wakame
2015-09-20 19:17:25 +09:00
2 changed files with 305 additions and 0 deletions
+81
View File
@@ -0,0 +1,81 @@
/// <reference path="msportalfx-test.d.ts" />
import testFx = require('MsPortalFx-Test');
var galleryPackageName = "My.Package";
var bladeTitle = "A Service";
var resourceProvider = 'My.Provider';
var resourceType = 'myResourceType';
var resourceName = 'myResource';
var userName = 'johndoe@johndoe.com';
var password = '123';
var resourceId = '/subscriptions/123/resourceGroups/456/providers/My.Provider/myResourceType/myResource';
var extensionName = 'LocalExtension';
var label = 'Field label';
var extensionUrl = 'https://localhost:44300/';
var voidPromise: Q.Promise<void>;
var boolPromise: Q.Promise<boolean>;
var anyPromise: Q.Promise<any>;
var summaryBlade = new testFx.Blades.Blade(resourceName);
function TestPortal() {
testFx.portal.portalContext.signInEmail = userName;
testFx.portal.portalContext.signInPassword = password;
testFx.portal.portalContext.features = [{ name: "greatfeature", value: "true" }];
testFx.portal.portalContext.testExtensions = [{ name: extensionName, uri: extensionUrl }];
anyPromise = testFx.portal.waitForElementLocated(summaryBlade.getLocator(), 30000);
anyPromise = testFx.portal.quit();
var createBladePromise = testFx.portal.openGalleryCreateBlade(galleryPackageName, bladeTitle, 20000);
var browseResourcePromise = testFx.portal.openBrowseBlade(resourceProvider, resourceType, bladeTitle, 20000);
var bladePromise = testFx.portal.openResourceBlade(resourceId, summaryBlade.title, 20000)
var stringPromise = testFx.portal.takeScreenshot("TestPortal");
var stringArrayPromise = testFx.portal.getBrowserLogs(testFx.LogLevel.All);
}
function TestBlades() {
var blade = new testFx.Blades.Blade(resourceName);
blade.clickCommand('Delete');
var createBlade = new testFx.Blades.CreateBlade(bladeTitle);
voidPromise = createBlade.actionBar.clickCreate();
voidPromise = createBlade.actionBar.clickDelete();
var browseBlade = new testFx.Blades.BrowseResourceBlade(bladeTitle);
voidPromise = browseBlade.selectResource(resourceName);
var pickerBlade = new testFx.Blades.PickerBlade(bladeTitle);
pickerBlade.pickItem('abc');
}
function TestParts() {
var part = new testFx.Parts.Part(summaryBlade.getLocator(), "Roles");
voidPromise = part.click();
boolPromise = part.isSelected();
boolPromise = part.waitUntilLoaded();
boolPromise = part.isLoaded();
var resourceSummary = new testFx.Parts.ResourceSummaryPart(summaryBlade.getLocator());
var count = resourceSummary.properties.length;
}
function TestControls() {
var selector = new testFx.Controls.SelectorField(summaryBlade.getLocator(), label);
voidPromise = selector.openPicker();
var creatorAndSelector = new testFx.Controls.CreatorAndSelectorField(summaryBlade.getLocator(), label, label);
var creatorAndSelectorPromise = creatorAndSelector.clickCreateNew();
creatorAndSelectorPromise = creatorAndSelector.enterNewValue('XYZ');
var textField = new testFx.Controls.TextField(summaryBlade.getLocator(), "Resource name");
var textFieldPromise = textField.sendKeys(resourceName);
}
function TestActionBars() {
var bar = new testFx.ActionBars.ActionBar(summaryBlade.getLocator());
voidPromise = bar.clickCreate();
voidPromise = bar.clickDelete();
}
+224
View File
@@ -0,0 +1,224 @@
// Type definitions for msportalfx-test
// Project: https://msazure.visualstudio.com/DefaultCollection/AzureUX/_git/portalfx-msportalfx-test
// Definitions by: Julio Casal <https://github.com/julioct>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../q/Q.d.ts" />
declare module MsPortalTestFx {
export module Locators {
export class Locator {
seleniumLocator: any;
findElements(context: any): any;
toString(): string;
}
export class ContentLocator extends Locator {
locators: Array<Locator>;
constructor(innerLocators: Locator[]);
findElements(context: any): any;
toString(): string;
}
export class ChainedLocator extends Locator {
locators: Array<Locator>;
constructor(innerLocators: Locator[]);
findElements(context: any): any;
toString(): string;
}
export class By {
static className(value: string): Locator;
static css(value: string): Locator;
static id(value: string): Locator;
static js(script: any, ...var_args: any[]): Locator;
static linkText(value: string): Locator;
static name(value: string): Locator;
static partialLinkText(value: string): Locator;
static tagName(value: string): Locator;
static xpath(value: string): Locator;
static chained(...values: Locator[]): Locator;
static content(...values: Locator[]): Locator;
}
}
export module ActionBars {
export class ActionBar extends MsPortalTestFx.PortalElement {
constructor(parentLocator?: Locators.Locator);
clickCreate(): Q.Promise<void>;
clickDelete(): Q.Promise<void>;
}
}
export module Blades {
export class Blade extends MsPortalTestFx.PortalElement {
public title: string;
constructor(title: string);
clickCommand(commandText: string): Q.Promise<Blade>;
}
export class CreateBlade extends Blade {
public actionBar: ActionBars.ActionBar;
}
export class BrowseResourceBlade extends Blade {
constructor(title: string);
selectResource(resourceName: string): Q.Promise<void>;
filterItems(filter: string): Q.Promise<BrowseResourceBlade>;
}
export class PickerBlade extends Blade {
constructor(title: string);
pickItem(item: string): Q.Promise<void>;
}
}
export module Controls {
export class FormElement extends MsPortalTestFx.PortalElement {
protected label: string;
constructor(baseLocator: Locators.Locator, parentLocator?: Locators.Locator, label?: string);
}
export class CheckBoxField extends FormElement {
constructor(parentLocator?: Locators.Locator, label?: string);
}
export class SelectorField extends FormElement {
constructor(parentLocator?: Locators.Locator, label?: string);
openPicker(): Q.Promise<void>;
}
export class CreatorAndSelectorField extends FormElement {
constructor(parentLocator?: Locators.Locator, selectModeLabel?: string, createModeLabel?: string);
openPicker(): Q.Promise<void>;
clickCreateNew(): Q.Promise<CreatorAndSelectorField>;
enterNewValue(...var_args: string[]): Q.Promise<CreatorAndSelectorField>;
}
export class GridCell extends MsPortalTestFx.PortalElement {
constructor(text: string, parentLocator?: Locators.Locator);
getLocator(): Locators.Locator;
}
export class TextField extends FormElement {
constructor(parentLocator?: Locators.Locator, label?: string, baseLocator?: Locators.Locator);
sendKeys(...var_args: string[]): Q.Promise<TextField>;
}
export class ResourceFilterTextField extends TextField {
constructor(parentLocator?: Locators.Locator);
}
}
export module Parts {
export class Part extends MsPortalTestFx.PortalElement {
public innerText: string;
constructor(parentLocator?: Locators.Locator, innerText?: string, baseLocator?: Locators.Locator);
isSelected(): Q.Promise<boolean>;
isLoaded(): Q.Promise<boolean>;
waitUntilLoaded(timeout?: number): Q.Promise<boolean>;
}
export class PartProperty extends MsPortalTestFx.PortalElement {
public name: string;
constructor(name: string, parentLocator?: Locators.Locator);
getValue(): Q.Promise<string>;
}
export class ResourceSummaryPart extends Part {
public properties: Array<PartProperty>;
public resourceGroupProperty: PartProperty;
constructor(parentLocator?: Locators.Locator);
}
export class Tile extends MsPortalTestFx.PortalElement {
public progressLocator: Locators.Locator;
constructor(parentLocator?: Locators.Locator);
}
}
export class PortalElement {
protected baseLocator: Locators.Locator;
protected parentLocator: Locators.Locator;
constructor(baseLocator: Locators.Locator, parentLocator?: Locators.Locator);
getLocator(): Locators.Locator;
click(): Q.Promise<void>;
getAttribute(attributeName: string): Q.Promise<string>;
}
export interface TestExtension {
name: string;
uri: string;
}
export interface Feature {
name: string;
value: string;
}
export interface PortalContext {
capabilities: {
browserName: string;
chromeOptions: {
args: string[]
}
},
chromeDriverPath?: string,
portalUrl: string;
signInUrl?: string;
signInEmail?: string;
signInPassword?: string;
features?: Feature[];
testExtensions?: TestExtension[];
}
export enum LogLevel {
All,
Debug,
Info,
Warning,
Severe,
Off
}
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>;
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>;
waitForElementNotVisible(locator: Locators.Locator, timeout?: number): Q.Promise<boolean>;
waitUntilElementContainsAttribute(locator: Locators.Locator, attributeName: string, attributeValue: string, timeout?: number): Q.Promise<any>;
waitForElementLocated(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>;
quit(): Q.Promise<any>;
}
export class SplashScreen extends PortalElement {
clickUntrustedExtensionsOkButton(): Q.Promise<void>;
}
export var portal: Portal;
}
declare module "MsPortalFx-Test" {
export = MsPortalTestFx;
}