From 604061b44db014a35c7cb0a62ce166f338668108 Mon Sep 17 00:00:00 2001 From: Qube Date: Thu, 22 Aug 2013 17:10:45 +1000 Subject: [PATCH 1/2] Switched from classes to interfaces. --- siesta/siesta.d.ts | 200 ++++++++++++++++++++++++++++++++------------- 1 file changed, 144 insertions(+), 56 deletions(-) diff --git a/siesta/siesta.d.ts b/siesta/siesta.d.ts index 2046f7089..858f0ff9d 100644 --- a/siesta/siesta.d.ts +++ b/siesta/siesta.d.ts @@ -5,169 +5,257 @@ declare var startTest: typeof StartTest; declare var describe: typeof StartTest; declare module Siesta { - export class Harness { - } - export module Harness { - export class Browser extends Harness { - } - export module Browser { - export class ExtJS extends Browser implements ExtJSCore { + export interface ExtJS extends Browser, ExtJSCore { } - export class ExtJSCore { + export interface ExtJSCore { } - export class SenchaTouch extends Browser implements ExtJSCore { + export interface SenchaTouch extends Browser, ExtJSCore { } } - export class NodeJS implements Harness { + export interface Browser extends Harness { + autoRun: boolean; + + autoScrollElementsIntoView: boolean; + + breakOnFail: boolean; + + coverageUnit: string; + + disableCaching: boolean; + + enableCodeCoverage: boolean; + + excludeCoverageUnits: RegExp; + + hostPageUrl: string; + + includeCoverageUnits: RegExp; + + maintainViewportSize: boolean; + + runCore: string; + + separateContext: boolean; + + simulateEventsWith: string; + + speedRun: boolean; + + testClass: Function; + + useStrictMode: boolean; + + viewDOM: boolean; + + viewportHeight: number; + + viewportWidth: number; + } + + export interface NodeJS extends Harness { } } - export class Test implements Test.BDD, Test.Date, Test.Function, Test.More { + /** + * `Siesta.Harness` is an abstract base harness interface in Siesta hierarchy. This interface provides no UI, you should use one of it subinterfacees, for example Siesta.Harness.Browser. + */ + export interface Harness { + alsoPreload: any[]; + + autoCheckGlobals: boolean; + + cachePreload: boolean; + + defaultTimeout: boolean; + + disableColoring: boolean; + + expectedGlobals: string[]; + + isReadyTimeout: number; + + keepNLastResults: number; + + keepResults: boolean; + + listenters: { + [key: string]: (event: Event, ...args: any[]) => void; + } + + maxThreads: number; + + needDone: boolean; + + overrideSetTimeout: boolean; + + pauseBetweenTests: number; + + preload: any[]; + + runCore: string; + + subTestTimeout: number; + + testClass: Function; + + title: string; + + transparentEx: boolean; + + waitForTimeout: number; + + configure(config: any): void; + + start(...descriptors: any[]): void; } export module Test { - export class Action { - } - export module Action { export module Role { - export class HasTarget { + export interface HasTarget { } } - export class Click extends Action implements Role.HasTarget { + export interface Click extends Action, Role.HasTarget { } - export class Done extends Action { + export interface Done extends Action { } - export class DoubleClick extends Action implements Role.HasTarget { + export interface DoubleClick extends Action, Role.HasTarget { } - export class DoubleTap extends Action implements Role.HasTarget { + export interface DoubleTap extends Action, Role.HasTarget { } - export class Drag extends Action { + export interface Drag extends Action { } - export class Eval extends Action { + export interface Eval extends Action { } - export class LongPress extends Action implements Role.HasTarget { + export interface LongPress extends Action, Role.HasTarget { } - export class MouseDown extends Action implements Role.HasTarget { + export interface MouseDown extends Action, Role.HasTarget { } - export class MouseUp extends Action implements Role.HasTarget { + export interface MouseUp extends Action, Role.HasTarget { } - export class MoveCursor extends Action implements Role.HasTarget { + export interface MoveCursor extends Action, Role.HasTarget { } - export class MoveCursorTo extends Action implements Role.HasTarget { + export interface MoveCursorTo extends Action, Role.HasTarget { } - export class RightClick extends Action implements Role.HasTarget { + export interface RightClick extends Action, Role.HasTarget { } - export class Swipe extends Action implements Role.HasTarget { + export interface Swipe extends Action, Role.HasTarget { } - export class Tap extends Action implements Role.HasTarget { + export interface Tap extends Action, Role.HasTarget { } - export class Type extends Action implements Role.HasTarget { + export interface Type extends Action, Role.HasTarget { } - export class Wait extends Action { + export interface Wait extends Action { } } - export class BDD { + export interface Action { } export module BDD { - export class Expectation { + export interface Expectation { } } - export class ExtJS extends Browser implements ExtJS.Ajax, ExtJS.Component, ExtJS.DataView, ExtJS.Element, ExtJS.FormField, ExtJS.Grid, ExtJS.Observable, ExtJS.Store, ExtJSCore { + export interface BDD { + //any(clsConstructor: Function): any; } export module ExtJS { - export class Ajax { + export interface Ajax { } - export class Component { + export interface Component { } - export class DataView { + export interface DataView { } - export class Element { + export interface Element { } - export class FormField { + export interface FormField { } - export class Grid { + export interface Grid { } - export class Observable { + export interface Observable { } - export class Store { + export interface Store { } } + export interface ExtJS extends Browser, ExtJS.Ajax, ExtJS.Component, ExtJS.DataView, ExtJS.Element, ExtJS.FormField, ExtJS.Grid, ExtJS.Observable, ExtJS.Store, ExtJSCore { + } + export module Simulate { - export class Event { + export interface Event { } - export class Keyboard { + export interface Keyboard { } - export module KeyCodes { + export interface KeyCodes { } - export class Mouse { + export interface Mouse { } } - export class ActionTarget { + export interface ActionTarget { } - export class Browser implements Simulate.Event, Simulate.Keyboard, Simulate.Mouse, TextSelection { + export interface Browser extends Simulate.Event, Simulate.Keyboard, Simulate.Mouse, TextSelection { } - export class Date { + export interface Date { } - export class Element { + export interface Element { } - export class ExtJSCore { + export interface ExtJSCore { } - export class Function { + export interface Function { } - export class jQuery extends Browser { + export interface jQuery extends Browser { } - export class More { + export interface More { } - export class SenchaTouch extends Browser implements ExtJS.Component, ExtJS.Element, ExtJS.FormField, ExtJS.Observable, ExtJS.Store, ExtJSCore { + export interface SenchaTouch extends Browser, ExtJS.Component, ExtJS.Element, ExtJS.FormField, ExtJS.Observable, ExtJS.Store, ExtJSCore { } - export class TextSelection { + export interface TextSelection { } } + + export interface Test extends Test.BDD, Test.Date, Test.Function, Test.More { + } } \ No newline at end of file From 9e5144ad93e268ebcc49742b6c15436ae8c7a84c Mon Sep 17 00:00:00 2001 From: Qube Date: Thu, 22 Aug 2013 20:22:02 +1000 Subject: [PATCH 2/2] Flattening attempt. --- siesta/siesta-tests.ts | 4 +- siesta/siesta.d.ts | 409 ++++++++++++++++++++++------------------- 2 files changed, 224 insertions(+), 189 deletions(-) diff --git a/siesta/siesta-tests.ts b/siesta/siesta-tests.ts index 2439ff84f..618e47aef 100644 --- a/siesta/siesta-tests.ts +++ b/siesta/siesta-tests.ts @@ -7,4 +7,6 @@ startTest(function (t: Siesta.Test) { }); describe(function (t: Siesta.Test) { -}); \ No newline at end of file +}); + +var Harness = Siesta.Harness.Browser.ExtJS; \ No newline at end of file diff --git a/siesta/siesta.d.ts b/siesta/siesta.d.ts index 858f0ff9d..1562b964c 100644 --- a/siesta/siesta.d.ts +++ b/siesta/siesta.d.ts @@ -1,70 +1,8 @@ -declare function StartTest(testScript: (t: Siesta.Test) => void): void; - -declare var startTest: typeof StartTest; - -declare var describe: typeof StartTest; - declare module Siesta { - export module Harness { - export module Browser { - export interface ExtJS extends Browser, ExtJSCore { - } - export interface ExtJSCore { - } + //#region Harness - export interface SenchaTouch extends Browser, ExtJSCore { - } - } - - export interface Browser extends Harness { - autoRun: boolean; - - autoScrollElementsIntoView: boolean; - - breakOnFail: boolean; - - coverageUnit: string; - - disableCaching: boolean; - - enableCodeCoverage: boolean; - - excludeCoverageUnits: RegExp; - - hostPageUrl: string; - - includeCoverageUnits: RegExp; - - maintainViewportSize: boolean; - - runCore: string; - - separateContext: boolean; - - simulateEventsWith: string; - - speedRun: boolean; - - testClass: Function; - - useStrictMode: boolean; - - viewDOM: boolean; - - viewportHeight: number; - - viewportWidth: number; - } - - export interface NodeJS extends Harness { - } - } - - /** - * `Siesta.Harness` is an abstract base harness interface in Siesta hierarchy. This interface provides no UI, you should use one of it subinterfacees, for example Siesta.Harness.Browser. - */ - export interface Harness { + interface IHarness { alsoPreload: any[]; autoCheckGlobals: boolean; @@ -114,148 +52,243 @@ declare module Siesta { start(...descriptors: any[]): void; } - export module Test { - export module Action { - export module Role { - export interface HasTarget { - } - } + interface IHarnessBrowser extends IHarness { + autoRun: boolean; - export interface Click extends Action, Role.HasTarget { - } + autoScrollElementsIntoView: boolean; - export interface Done extends Action { - } + breakOnFail: boolean; - export interface DoubleClick extends Action, Role.HasTarget { - } + coverageUnit: string; - export interface DoubleTap extends Action, Role.HasTarget { - } + disableCaching: boolean; - export interface Drag extends Action { - } + enableCodeCoverage: boolean; - export interface Eval extends Action { - } + excludeCoverageUnits: RegExp; - export interface LongPress extends Action, Role.HasTarget { - } + hostPageUrl: string; - export interface MouseDown extends Action, Role.HasTarget { - } + includeCoverageUnits: RegExp; - export interface MouseUp extends Action, Role.HasTarget { - } + maintainViewportSize: boolean; - export interface MoveCursor extends Action, Role.HasTarget { - } + runCore: string; - export interface MoveCursorTo extends Action, Role.HasTarget { - } + separateContext: boolean; - export interface RightClick extends Action, Role.HasTarget { - } + simulateEventsWith: string; - export interface Swipe extends Action, Role.HasTarget { - } + speedRun: boolean; - export interface Tap extends Action, Role.HasTarget { - } + testClass: Function; - export interface Type extends Action, Role.HasTarget { - } + useStrictMode: boolean; - export interface Wait extends Action { - } - } + viewDOM: boolean; - export interface Action { - } + viewportHeight: number; - export module BDD { - export interface Expectation { - } - } - - export interface BDD { - //any(clsConstructor: Function): any; - } - - export module ExtJS { - export interface Ajax { - } - - export interface Component { - } - - export interface DataView { - } - - export interface Element { - } - - export interface FormField { - } - - export interface Grid { - } - - export interface Observable { - } - - export interface Store { - } - } - - export interface ExtJS extends Browser, ExtJS.Ajax, ExtJS.Component, ExtJS.DataView, ExtJS.Element, ExtJS.FormField, ExtJS.Grid, ExtJS.Observable, ExtJS.Store, ExtJSCore { - } - - export module Simulate { - export interface Event { - } - - export interface Keyboard { - } - - export interface KeyCodes { - } - - export interface Mouse { - } - } - - export interface ActionTarget { - } - - export interface Browser extends Simulate.Event, Simulate.Keyboard, Simulate.Mouse, TextSelection { - } - - export interface Date { - } - - export interface Element { - } - - export interface ExtJSCore { - } - - export interface Function { - } - - export interface jQuery extends Browser { - } - - export interface More { - } - - export interface SenchaTouch extends Browser, ExtJS.Component, ExtJS.Element, ExtJS.FormField, ExtJS.Observable, ExtJS.Store, ExtJSCore { - } - - export interface TextSelection { - } + viewportWidth: number; } - export interface Test extends Test.BDD, Test.Date, Test.Function, Test.More { + interface IHarnessBrowserExtJS extends IHarnessBrowser, IHarnessBrowserExtJSCore { } -} \ No newline at end of file + + interface IHarnessBrowserExtJSCore { + } + + interface IHarnessBrowserSenchaTouch extends IHarnessBrowser, IHarnessBrowserExtJSCore { + } + + interface IHarnessBrowserSingleton extends IHarnessBrowser { + ExtJS: IHarnessBrowserExtJS; + SenchaTouch: IHarnessBrowserSenchaTouch; + } + + interface IHarnessNodeJS extends IHarness { + } + + interface IHarnessSingleton { + Browser: IHarnessBrowserSingleton; + NojeJS: IHarnessNodeJS; + } + + /** + * `Siesta.Harness` is an abstract base harness interface in Siesta hierarchy. This interface provides no UI, you should use one of it subinterfacees, for example Siesta.Harness.Browser. + */ + var Harness: IHarnessSingleton; + + //#endregion + + //#region Test + + interface ITest extends ITestBDD, ITestDate, ITestFunction, ITestMore { + } + + interface ITestBDD { + any(clsConstructor: Function): any; + } + + interface ITestBDDExpectation { + } + + interface ITestDate { + } + + interface ITestFunction { + } + + interface ITestMore { + } + + interface ITestAction { + } + + interface ITestActionClick extends ITestAction, ITestActionRoleHasTarget { + } + + interface ITestActionDone extends ITestAction { + } + + interface ITestActionDoubleClick extends ITestAction, ITestActionRoleHasTarget { + } + + interface ITestActionDoubleTap extends ITestAction, ITestActionRoleHasTarget { + } + + interface ITestActionDrag extends ITestAction { + } + + interface ITestActionEval extends ITestAction { + } + + interface ITestActionLongPress extends ITestAction, ITestActionRoleHasTarget { + } + + interface ITestActionMouseDown extends ITestAction, ITestActionRoleHasTarget { + } + + interface ITestActionMouseUp extends ITestAction, ITestActionRoleHasTarget { + } + + interface ITestActionMoveCursor extends ITestAction, ITestActionRoleHasTarget { + } + + interface ITestActionMoveCursorTo extends ITestAction, ITestActionRoleHasTarget { + } + + interface ITestActionRightClick extends ITestAction, ITestActionRoleHasTarget { + } + + interface ITestActionSwipe extends ITestAction, ITestActionRoleHasTarget { + } + + interface ITestActionTap extends ITestAction, ITestActionRoleHasTarget { + } + + interface ITestActionType extends ITestAction, ITestActionRoleHasTarget { + } + + interface ITestActionWait extends ITestAction { + } + + interface ITestActionRoleHasTarget { + } + + interface ITestBrowser extends ITestElement, ITestSimulateEvent, ITestSimulateKeyboard, ITestSimulateMouse, ITestTextSelection { + } + + interface ITestElement { + } + + interface ITestExtJS extends ITestBrowser, ITestExtJSAjax, ITestExtJSComponent, ITestExtJSDataView, ITestExtJSElement, ITestExtJSFormField, ITestExtJSGrid, ITestExtJSObservable, ITestExtJSStore, ITestExtJSCore { + } + + interface ITestExtJSCore { + } + + interface ITestExtJSAjax { + } + + interface ITestExtJSComponent { + } + + interface ITestExtJSDataView { + } + + interface ITestExtJSElement { + } + + interface ITestExtJSFormField { + } + + interface ITestExtJSGrid { + } + + interface ITestExtJSObservable { + } + + interface ITestExtJSStore { + } + + interface ITestSimulateEvent { + } + + interface ITestSimulateKeyboard { + } + + interface ITestSimulateKeyCodes { + } + + interface ITestSimulateMouse { + } + + interface ITestTextSelection { + } + + interface ITestjQuery extends ITestBrowser { + } + + interface ITestSenchaTouch extends ITestBrowser, ITestExtJSComponent, ITestExtJSElement, ITestExtJSFormField, ITestExtJSObservable, ITestExtJSStore, ITestExtJSCore { + } + + interface ITestSingleton { + new (): Test; + + BDD: { + Expectation: { + new (): ITestBDDExpectation + } + }; + + ExtJS: { + new (): ITestExtJS; + }; + + Browser: { + new (): ITestBrowser; + } + + jQuery: { + new (): ITestjQuery; + }; + + SenchaTouch: { + new (): ITestSenchaTouch; + }; + } + + interface Test extends ITest { + } + + var Test: ITestSingleton; + + //#endregion +} + +declare function StartTest(testScript: (t: Siesta.Test) => void): void; + +declare var startTest: typeof StartTest; + +declare var describe: typeof StartTest; \ No newline at end of file