msportalfx-test: Provides its own types (#39470)

This commit is contained in:
Alexander T
2019-11-01 10:40:22 -07:00
committed by Jesse Trinity
parent 8ccd3508e0
commit 7f3df2e1c6
5 changed files with 6 additions and 559 deletions
+6
View File
@@ -2502,6 +2502,12 @@
"sourceRepoURL": "https://github.com/mqttjs/MQTT.js",
"asOfVersion": "2.5.0"
},
{
"libraryName": "msportalfx-test",
"typingsPackageName": "msportalfx-test",
"sourceRepoURL": "https://msazure.visualstudio.com/DefaultCollection/AzureUX/_git/portalfx-msportalfx-test",
"asOfVersion": "0.7.2"
},
{
"libraryName": "multimatch",
"typingsPackageName": "multimatch",
-311
View File
@@ -1,311 +0,0 @@
// 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/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.3
import * as Q from "q";
export = MsPortalTestFx;
declare namespace 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 text(value: string): Locator;
static chained(...values: Locator[]): Locator;
static content(...values: Locator[]): Locator;
}
}
export module ActionBars {
export class ActionBarButton extends PortalElement {
constructor(parentLocator?: Locators.Locator, baseLocator?: Locators.Locator);
click(): Q.Promise<void>;
}
export class CreateActionBar extends PortalElement {
public createButton: ActionBarButton;
constructor(parentLocator?: Locators.Locator);
}
export class DeleteActionBar extends PortalElement {
public deleteButton: ActionBarButton;
public cancelButton: ActionBarButton;
constructor(parentLocator?: Locators.Locator);
}
export class PickerActionBar extends PortalElement {
public selectButton: ActionBarButton;
constructor(parentLocator?: Locators.Locator);
}
}
export module Blades {
export class Blade extends MsPortalTestFx.PortalElement {
public title: string;
constructor(title: string);
clickCommand(commandText: string): Q.Promise<Blade>;
getTiles(): Q.Promise<Parts.Tile[]>;
}
export class CreateBlade extends Blade {
public actionBar: ActionBars.CreateActionBar;
}
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 {
pickItem(item: string): Q.Promise<void>;
}
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 {
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<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 {
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>;
isClickable(): Q.Promise<boolean>;
hasError(): 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;
public quickStartHotSpot: Controls.HotSpot;
public accessHotSpot: Controls.HotSpot;
constructor(parentLocator?: Locators.Locator);
}
class PricingTierPart extends Part {
}
export class Tile extends MsPortalTestFx.PortalElement {
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 {
public baseLocator: Locators.Locator;
protected parentLocator: Locators.Locator;
constructor(baseLocator: Locators.Locator, parentLocator?: 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 {
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;
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>;
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>;
getBrowserLogs(level: LogLevel): Q.Promise<string[]>;
executeScript<T>(script: string): Q.Promise<T>;
applyFeature(name: string, value: string): void;
getCurrentUrl(): Q.Promise<string>;
quit(): Q.Promise<any>;
}
export class SplashScreen extends PortalElement {
clickUntrustedExtensionsOkButton(): Q.Promise<void>;
}
export class StartBoard extends PortalElement {
constructor();
getTiles(): Q.Promise<Parts.Tile[]>;
}
export var portal: Portal;
}
@@ -1,140 +0,0 @@
import * as Q from 'q';
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 stringPromise: Q.Promise<string>;
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);
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);
var bladePromise = blade.clickCommand('Delete');
var tilesPromise = blade.getTiles();
var createBlade = new testFx.Blades.CreateBlade(bladeTitle);
voidPromise = createBlade.actionBar.createButton.click();
var browseBlade = new testFx.Blades.BrowseResourceBlade(bladeTitle);
voidPromise = browseBlade.selectResource(resourceName);
var pickerBlade = new testFx.Blades.PickerBlade(bladeTitle);
pickerBlade.pickItem('abc');
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() {
var part = new testFx.Parts.Part(summaryBlade.getLocator(), "Roles");
voidPromise = part.click();
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() {
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);
var hotSpot = new testFx.Controls.HotSpot(summaryBlade.getLocator());
boolPromise = hotSpot.isSelected();
}
function TestActionBars() {
var createBar = new testFx.ActionBars.CreateActionBar(summaryBlade.getLocator());
voidPromise = createBar.createButton.click();
var deleteBar = new testFx.ActionBars.DeleteActionBar(summaryBlade.getLocator());
voidPromise = deleteBar.deleteButton.click();
voidPromise = deleteBar.cancelButton.click();
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);
}
-28
View File
@@ -1,28 +0,0 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": false,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"paths": {
"q": [
"q/v0"
]
},
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"msportalfx-test-tests.ts"
]
}
-80
View File
@@ -1,80 +0,0 @@
{
"extends": "dtslint/dt.json",
"rules": {
"adjacent-overload-signatures": false,
"array-type": false,
"arrow-return-shorthand": false,
"ban-types": false,
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,
"interface-name": false,
"interface-over-type-literal": false,
"jsdoc-format": false,
"max-line-length": false,
"member-access": false,
"new-parens": false,
"no-any-union": false,
"no-boolean-literal-compare": false,
"no-conditional-assignment": false,
"no-consecutive-blank-lines": false,
"no-construct": false,
"no-declare-current-package": false,
"no-duplicate-imports": false,
"no-duplicate-variable": false,
"no-empty-interface": false,
"no-for-in-array": false,
"no-inferrable-types": false,
"no-internal-module": false,
"no-irregular-whitespace": false,
"no-mergeable-namespace": false,
"no-misused-new": false,
"no-namespace": false,
"no-object-literal-type-assertion": false,
"no-padding": false,
"no-redundant-jsdoc": false,
"no-redundant-jsdoc-2": false,
"no-redundant-undefined": false,
"no-reference-import": false,
"no-relative-import-in-test": false,
"no-self-import": false,
"no-single-declare-module": false,
"no-string-throw": false,
"no-unnecessary-callback-wrapper": false,
"no-unnecessary-class": false,
"no-unnecessary-generics": false,
"no-unnecessary-qualifier": false,
"no-unnecessary-type-assertion": false,
"no-useless-files": false,
"no-var-keyword": false,
"no-var-requires": false,
"no-void-expression": false,
"no-trailing-whitespace": false,
"object-literal-key-quotes": false,
"object-literal-shorthand": false,
"one-line": false,
"one-variable-per-declaration": false,
"only-arrow-functions": false,
"prefer-conditional-expression": false,
"prefer-const": false,
"prefer-declare-function": false,
"prefer-for-of": false,
"prefer-method-signature": false,
"prefer-template": false,
"radix": false,
"semicolon": false,
"space-before-function-paren": false,
"space-within-parens": false,
"strict-export-declare-modifiers": false,
"trim-file": false,
"triple-equals": false,
"typedef-whitespace": false,
"unified-signatures": false,
"void-return": false,
"whitespace": false
}
}