diff --git a/tests/.gitignore b/tests/.gitignore index 9b0e2ef3f..df14611cc 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -6,6 +6,10 @@ typings .tscache app/**/*.js +e2e/**/*.js app/**/*.map +e2e/**/*.map +e2e/reports +test-results.xml platforms lib diff --git a/tests/app/app.component.ts b/tests/app/app.component.ts index 55dc77724..e997d6eb0 100644 --- a/tests/app/app.component.ts +++ b/tests/app/app.component.ts @@ -1,6 +1,6 @@ -import {Component} from "@angular/core"; -import {SinglePageMain} from "./single-page-main.component"; -import {MultiPageMain} from "./multi-page-main.component"; +import { Component } from "@angular/core"; +import { SinglePageMain } from "./single-page-main.component"; +import { MultiPageMain } from "./multi-page-main.component"; @Component({ selector: "my-app", diff --git a/tests/app/tests/property-sets.ts b/tests/app/tests/property-sets.ts index e3d2694d4..3b5c5253e 100644 --- a/tests/app/tests/property-sets.ts +++ b/tests/app/tests/property-sets.ts @@ -46,10 +46,10 @@ describe("setting View properties", () => { it("doesn\'t convert number values", () => { let view = new TestView(); viewUtil.setProperty(view, "numValue", "42"); - assert.strictEqual("42", view.numValue); + assert.strictEqual(42, view.numValue); viewUtil.setProperty(view, "numValue", "42."); - assert.strictEqual("42.", view.numValue); + assert.strictEqual(42., view.numValue); viewUtil.setProperty(view, "numValue", 0); assert.strictEqual(0, view.numValue); @@ -58,9 +58,9 @@ describe("setting View properties", () => { it("doesn\'t convert boolean values", () => { let view = new TestView(); viewUtil.setProperty(view, "boolValue", "true"); - assert.strictEqual("true", view.boolValue); + assert.strictEqual(true, view.boolValue); viewUtil.setProperty(view, "boolValue", "false"); - assert.strictEqual("false", view.boolValue); + assert.strictEqual(false, view.boolValue); }); it("sets style values", () => { diff --git a/tests/e2e-tests/lazy-load-routing.js b/tests/e2e-tests/lazy-load-routing.js deleted file mode 100644 index 044103081..000000000 --- a/tests/e2e-tests/lazy-load-routing.js +++ /dev/null @@ -1,66 +0,0 @@ -"use strict"; -var nsAppium = require("nativescript-dev-appium"); - -describe("lazy load routing", function () { - this.timeout(360000); - var driver; - - before(function () { - driver = nsAppium.createDriver(); - }); - - after(function () { - return driver - .quit() - .finally(function () { - console.log("Driver quit successfully"); - }); - }); - - it("loads default path", function () { - return driver - .waitForElementByAccessibilityId("first-lazy-load", 300000) - .elementByAccessibilityId("first-lazy-load") - .should.eventually.exist - .text().should.eventually.equal("First: lazy-load") - }); - - it("navigates and returns", function () { - var expectedHookLog = [ - "first.init", // <-- load - "second.init", // <-- forward (first component is not destroyed) - "second.destroy"] // <-- back (first component is reused) - .join(","); - return driver - .waitForElementByAccessibilityId("first-navigate-lazy-load", 300000) - .elementByAccessibilityId("first-navigate-lazy-load") - .should.eventually.exist - .tap() - .elementByAccessibilityId("second-lazy-load") - .should.eventually.exist - .text().should.eventually.equal("Second: lazy-load") - .elementByAccessibilityId("router-location-strategy-states-lazy-load") - .text().should.eventually.equal("/first/lazy-load,/second/lazy-load") - .elementByAccessibilityId("second-navigate-back-lazy-load") - .should.eventually.exist - .tap() - .elementByAccessibilityId("first-lazy-load") - .should.eventually.exist - .text().should.eventually.equal("First: lazy-load") - .elementByAccessibilityId("hooks-log-lazy-load") - .text().should.eventually.equal(expectedHookLog) - }); - - it("navigates and clear history", function() { - return driver - .waitForElementByAccessibilityId("first-navigate-lazy-load", 300000) - .elementByAccessibilityId("first-navigate-clear-history-lazy-load") - .should.eventually.exist - .tap() - .elementByAccessibilityId("second-lazy-load") - .should.eventually.exist - .text().should.eventually.equal("Second: lazy-load") - .elementByAccessibilityId("router-location-strategy-states-lazy-load") - .text().should.eventually.equal("/second/lazy-load") - }); -}); diff --git a/tests/e2e-tests/multi-page-routing.js b/tests/e2e-tests/multi-page-routing.js deleted file mode 100644 index 161d58c05..000000000 --- a/tests/e2e-tests/multi-page-routing.js +++ /dev/null @@ -1,51 +0,0 @@ -"use strict"; -var nsAppium = require("nativescript-dev-appium"); - -describe("multi page routing", function () { - this.timeout(360000); - var driver; - - before(function () { - driver = nsAppium.createDriver(); - }); - - after(function () { - return driver - .quit() - .finally(function () { - console.log("Driver quit successfully"); - }); - }); - - it("loads default path", function () { - return driver - .waitForElementByAccessibilityId("first-multi-page", 300000) - .elementByAccessibilityId("first-multi-page") - .should.eventually.exist - .text().should.eventually.equal("First: multi-page") - }); - - it("navigates and returns", function () { - var expectedHookLog = [ - "first.init", // <-- load - "second.init", // <-- forward (first component is not destroyed) - "second.destroy"] // <-- back (first component is reused) - .join(","); - return driver - .waitForElementByAccessibilityId("first-navigate-multi-page", 300000) - .elementByAccessibilityId("first-navigate-multi-page") - .should.eventually.exist - .tap() - .elementByAccessibilityId("second-multi-page") - .should.eventually.exist - .text().should.eventually.equal("Second: multi-page") - .elementByAccessibilityId("second-navigate-back-multi-page") - .should.eventually.exist - .tap() - .elementByAccessibilityId("first-multi-page") - .should.eventually.exist - .text().should.eventually.equal("First: multi-page") - .elementByAccessibilityId("hooks-log-multi-page") - .text().should.eventually.equal(expectedHookLog) - }); -}); diff --git a/tests/e2e-tests/single-page-routing.js b/tests/e2e-tests/single-page-routing.js deleted file mode 100644 index c839953da..000000000 --- a/tests/e2e-tests/single-page-routing.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; -var nsAppium = require("nativescript-dev-appium"); - -describe("single page routing", function () { - this.timeout(360000); - var driver; - - before(function () { - driver = nsAppium.createDriver(); - }); - - after(function () { - return driver - .quit() - .finally(function () { - console.log("Driver quit successfully"); - }); - }); - - it("loads default path", function () { - return driver - .waitForElementByAccessibilityId("first-single-page", 300000) - .elementByAccessibilityId("first-single-page") - .should.eventually.exist - .text().should.eventually.equal("First: single-page") - }); - - it("navigates and returns", function () { - var expectedHookLog = [ - "first.init", // <--load - "first.destroy", // <--forward - "second.init", - "second.destroy", // <--back - "first.init"].join(","); - - return driver - .waitForElementByAccessibilityId("first-single-page", 300000) - .elementByAccessibilityId("first-navigate-single-page") - .should.eventually.exist - .tap() - .elementByAccessibilityId("second-single-page") - .should.eventually.exist - .text().should.eventually.equal("Second: single-page") - .elementByAccessibilityId("second-navigate-back-single-page") - .should.eventually.exist - .tap() - .elementByAccessibilityId("first-single-page") - .should.eventually.exist - .text().should.eventually.equal("First: single-page") - .elementByAccessibilityId("hooks-log-single-page") - .text().should.eventually.equal(expectedHookLog) - }); -}); diff --git a/tests/e2e/config/appium.capabilities.json b/tests/e2e/config/appium.capabilities.json new file mode 100644 index 000000000..d469908bd --- /dev/null +++ b/tests/e2e/config/appium.capabilities.json @@ -0,0 +1,90 @@ +{ + "android19": { + "platformName": "Android", + "platformVersion": "4.4", + "deviceName": "Emulator-Api19-Default", + "avd": "Emulator-Api19-Default", + "lt": 60000, + "appActivity": "com.tns.NativeScriptActivity", + "newCommandTimeout": 720, + "noReset": true, + "fullReset": false, + "app": "" + }, + "android21": { + "platformName": "Android", + "platformVersion": "5.0", + "deviceName": "Emulator-Api21-Default", + "avd": "Emulator-Api21-Default", + "lt": 60000, + "appActivity": "com.tns.NativeScriptActivity", + "newCommandTimeout": 720, + "noReset": true, + "fullReset": false, + "app": "" + }, + "android23": { + "platformName": "Android", + "platformVersion": "6.0", + "deviceName": "Emulator-Api23-Default", + "avd": "Emulator-Api23-Default", + "lt": 60000, + "appActivity": "com.tns.NativeScriptActivity", + "newCommandTimeout": 720, + "noReset": true, + "fullReset": false, + "app": "" + }, + "android24": { + "platformName": "Android", + "platformVersion": "7.0", + "deviceName": "Emulator-Api24-Default", + "avd": "Emulator-Api24-Default", + "lt": 60000, + "appActivity": "com.tns.NativeScriptActivity", + "newCommandTimeout": 720, + "noReset": true, + "fullReset": false, + "app": "" + }, + "android25": { + "platformName": "Android", + "platformVersion": "7.1", + "deviceName": "Emulator-Api25-Google", + "avd": "Emulator-Api25-Google", + "lt": 60000, + "appActivity": "com.tns.NativeScriptActivity", + "newCommandTimeout": 720, + "noReset": true, + "fullReset": false, + "app": "" + }, + "android26": { + "platformName": "Android", + "platformVersion": "8.0", + "deviceName": "Emulator-Api26-Google", + "avd": "Emulator-Api26-Google", + "lt": 60000, + "appActivity": "com.tns.NativeScriptActivity", + "newCommandTimeout": 720, + "noReset": true, + "fullReset": false, + "app": "" + }, + "sim.iPhone7.iOS100": { + "platformName": "iOS", + "platformVersion": "10.0", + "deviceName": "iPhone 7 100", + "noReset": true, + "fullReset": false, + "app": "" + }, + "sim.iPhone7.iOS110": { + "platformName": "iOS", + "platformVersion": "11.0", + "deviceName": "iPhone 7 110", + "noReset": true, + "fullReset": false, + "app": "" + } +} diff --git a/tests/e2e/config/mocha.opts b/tests/e2e/config/mocha.opts new file mode 100644 index 000000000..ea635b0dc --- /dev/null +++ b/tests/e2e/config/mocha.opts @@ -0,0 +1,4 @@ +--timeout 140000 +--recursive e2e +--reporter mocha-multi +--reporter-options spec=-,mocha-junit-reporter=test-results.xml \ No newline at end of file diff --git a/tests/e2e/const.js b/tests/e2e/const.js new file mode 100644 index 000000000..9978b5dac --- /dev/null +++ b/tests/e2e/const.js @@ -0,0 +1,4 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.initialDisplayName = "initialdisplay"; +//# sourceMappingURL=const.js.map \ No newline at end of file diff --git a/tests/e2e/helpers/image-helper.ts b/tests/e2e/helpers/image-helper.ts new file mode 100644 index 000000000..ff82fb024 --- /dev/null +++ b/tests/e2e/helpers/image-helper.ts @@ -0,0 +1,22 @@ +import { AppiumDriver } from "nativescript-dev-appium"; +import { assert } from "chai"; + +export class ImageHelper { + private _imagesResults = new Map(); + + constructor(private _driver: AppiumDriver) { } + + public async compareScreen(imageName, retryCounts = 1, tollerance = 0.01) { + this._imagesResults.set(imageName, await this._driver.compareScreen(imageName, retryCounts, tollerance)); + } + + public assertImages() { + for (let key in this._imagesResults) { + assert.isTrue(this._imagesResults.get(key), `Image is not correct ${key}`); + } + } + + public reset(){ + this._imagesResults.clear(); + } +} \ No newline at end of file diff --git a/tests/e2e/lazy-load-routing.ts b/tests/e2e/lazy-load-routing.ts new file mode 100644 index 000000000..5348e6879 --- /dev/null +++ b/tests/e2e/lazy-load-routing.ts @@ -0,0 +1,40 @@ +import { AppiumDriver, createDriver } from "nativescript-dev-appium"; +import { assert } from "chai"; +import { ImageHelper } from "./helpers/image-helper" + +describe("lazy load routing", async function () { + let driver: AppiumDriver; + let imageHelper: ImageHelper; + const lazyLoadedDisplay = "lazyLoadedDisplay"; + + before(async () => { + driver = await createDriver(); + await driver.resetApp(); + imageHelper = new ImageHelper(driver); + }); + + afterEach("clear image results", () => { + imageHelper.reset(); + }); + + it("navigates and returns", async () => { + await (await driver.findElementByAccessibilityId("first-navigate-lazy-load")).tap(); + imageHelper.compareScreen("first-navigate-lazy-load-screen"); + + const btn = await driver.findElementByAccessibilityId("second-navigate-back-lazy-load"); + btn.tap(); + imageHelper.compareScreen("second-navigate-back-lazy-load-screen"); + + imageHelper.assertImages(); + }); + + it("navigates and clear history", async () => { + await (await driver.findElementByAccessibilityId("first-navigate-clear-history-lazy-load")).tap(); + imageHelper.compareScreen("first-navigate-clear-history-lazy-load-screen"); + + await driver.navBack(); + imageHelper.compareScreen("first-navigate-clear-history-lazy-load-nav-back-sceen"); + + imageHelper.assertImages(); + }); +}); diff --git a/tests/e2e/multi-page-routing.ts b/tests/e2e/multi-page-routing.ts new file mode 100644 index 000000000..db4a86719 --- /dev/null +++ b/tests/e2e/multi-page-routing.ts @@ -0,0 +1,29 @@ +import { AppiumDriver, createDriver } from "nativescript-dev-appium"; +import { assert } from "chai"; +import { ImageHelper } from "./helpers/image-helper"; + +describe("multi page routing", async () => { + let driver: AppiumDriver; + let imageHelper: ImageHelper; + + before(async () => { + driver = await createDriver(); + await driver.resetApp(); + imageHelper = new ImageHelper(driver); + }); + + afterEach(()=>{ + imageHelper.reset(); + }) + + it("navigates and returns", async () => { + let btn = await driver.findElementByAccessibilityId("first-navigate-multi-page"); + await btn.tap(); + await imageHelper.compareScreen("first-navigate-multi-page-screen", 3); + + btn = await driver.findElementByAccessibilityId("second-navigate-back-multi-page"); + await btn.tap(); + await imageHelper.compareScreen("second-navigate-back-multi-page-screen", 1, 0.01); + imageHelper.assertImages(); + }); +}); diff --git a/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-clear-history-lazy-load-nav-back-sceen.png b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-clear-history-lazy-load-nav-back-sceen.png new file mode 100755 index 000000000..7c8653c11 Binary files /dev/null and b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-clear-history-lazy-load-nav-back-sceen.png differ diff --git a/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-clear-history-lazy-load-screen.png b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-clear-history-lazy-load-screen.png new file mode 100755 index 000000000..7a3014a67 Binary files /dev/null and b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-clear-history-lazy-load-screen.png differ diff --git a/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-clear-history-single-page-screen_actual.png b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-clear-history-single-page-screen_actual.png new file mode 100755 index 000000000..c76add36a Binary files /dev/null and b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-clear-history-single-page-screen_actual.png differ diff --git a/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-clear-history-single-page.png b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-clear-history-single-page.png new file mode 100755 index 000000000..e484c2823 Binary files /dev/null and b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-clear-history-single-page.png differ diff --git a/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-lazy-load-screen.png b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-lazy-load-screen.png new file mode 100755 index 000000000..c08ba640d Binary files /dev/null and b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-lazy-load-screen.png differ diff --git a/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-multi-page-screen.png b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-multi-page-screen.png new file mode 100755 index 000000000..c96828824 Binary files /dev/null and b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-navigate-multi-page-screen.png differ diff --git a/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-single-page-screen.png b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-single-page-screen.png new file mode 100755 index 000000000..191481588 Binary files /dev/null and b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/first-single-page-screen.png differ diff --git a/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/second-navigate-back-lazy-load-screen.png b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/second-navigate-back-lazy-load-screen.png new file mode 100755 index 000000000..9e40c0c96 Binary files /dev/null and b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/second-navigate-back-lazy-load-screen.png differ diff --git a/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/second-navigate-back-multi-page-screen.png b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/second-navigate-back-multi-page-screen.png new file mode 100755 index 000000000..84d8b7eeb Binary files /dev/null and b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/second-navigate-back-multi-page-screen.png differ diff --git a/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/second-navigate-back-single-page-screen.png b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/second-navigate-back-single-page-screen.png new file mode 100755 index 000000000..c29c6e503 Binary files /dev/null and b/tests/e2e/resources/images/ngtests/Emulator-Api24-Default/second-navigate-back-single-page-screen.png differ diff --git a/tests/e2e/setup.ts b/tests/e2e/setup.ts new file mode 100644 index 000000000..64138b8d3 --- /dev/null +++ b/tests/e2e/setup.ts @@ -0,0 +1,20 @@ +import { startServer, stopServer, createDriver, AppiumDriver } from "nativescript-dev-appium"; + +let driver: AppiumDriver; +before("start server", async () => { + await startServer(); + driver = await createDriver(); +}); + +afterEach(async function () { + if (this.currentTest.state === "failed") { + const fullName = await this.currentTest.fullTitle(); + await driver.logScreenshot(fullName); + await driver.logPageSource(fullName); + } +}); + +after("stop server", async () => { + await driver.quit(); + await stopServer(); +}); diff --git a/tests/e2e/single-page-routing.ts b/tests/e2e/single-page-routing.ts new file mode 100644 index 000000000..dc0a75694 --- /dev/null +++ b/tests/e2e/single-page-routing.ts @@ -0,0 +1,42 @@ +import { AppiumDriver, createDriver } from "nativescript-dev-appium"; +import { assert } from "chai"; +import { ImageHelper } from "./helpers/image-helper"; + + +describe("single page routing", function () { + let driver: AppiumDriver; + let imageHelper: ImageHelper; + + before(async () => { + driver = await createDriver(); + await driver.resetApp(); + imageHelper = new ImageHelper(driver); + }); + + afterEach("clear image results", () => { + imageHelper.reset(); + }); + + it("navigates and returns", async () => { + let btn = (await driver.findElementByAccessibilityId("first-navigate-single-page")); + await btn.tap(); + await imageHelper.compareScreen("first-single-page-screen"); + + btn = await driver.findElementByAccessibilityId("second-navigate-back-single-page"); + await btn.tap(); + await imageHelper.compareScreen("second-navigate-back-single-page-screen"); + + imageHelper.assertImages(); + }); + + it("navigates and returns with clear history", async () => { + let btn = (await driver.findElementByAccessibilityId("first-navigate-clear-history-single-page")); + await btn.click(); + await imageHelper.compareScreen("first-navigate-clear-history-single-page-screen"); + + await driver.navBack(); + await imageHelper.compareScreen("second-navigate-back-single-page-screen"); + + imageHelper.assertImages(); + }); +}); diff --git a/tests/e2e/tsconfig.json b/tests/e2e/tsconfig.json new file mode 100644 index 000000000..99f58b8e6 --- /dev/null +++ b/tests/e2e/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "importHelpers": true, + "sourceMap": true, + "types": [ + "node", + "mocha", + "chai" + ], + "lib": [ + "es6", + "dom" + ] + } +} \ No newline at end of file diff --git a/tests/hooks/before-livesync/nativescript-angular-sync.js b/tests/hooks/before-livesync/nativescript-angular-sync.js deleted file mode 100644 index 5a8510cb2..000000000 --- a/tests/hooks/before-livesync/nativescript-angular-sync.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("nativescript-angular/hooks/before-livesync"); diff --git a/tests/package.json b/tests/package.json index d23bf511b..89db53ad8 100644 --- a/tests/package.json +++ b/tests/package.json @@ -42,6 +42,9 @@ "zone.js": "^0.8.2" }, "devDependencies": { + "@types/chai": "^4.0.2", + "@types/mocha": "^2.2.41", + "@types/node": "^7.0.5", "babel-traverse": "6.8.0", "babel-types": "6.8.1", "babylon": "6.8.0", @@ -55,16 +58,19 @@ "karma-mocha-reporter": "^1.2.0", "karma-nativescript-launcher": "^0.4.0", "lazy": "1.0.11", - "mocha": "^2.4.5", - "nativescript-dev-appium": "^0.4.0", + "mocha-junit-reporter": "^1.13.0", + "mocha-multi": "^0.11.0", + "nativescript-dev-appium": "next", "nativescript-dev-typescript": "^0.4.0", "socket.io": "1.4.8", "socket.io-client": "1.4.8", + "tslib": "^1.7.1", "tslint": "^4.5.1", - "typescript": "~2.2.0", - "wd": "^1.2.0" + "typescript": "~2.5.0", + "mocha": "~3.5.0" }, "scripts": { - "appium": "nativescript-dev-appium" + "e2e": "tsc -p e2e && mocha --opts ./e2e/config/mocha.opts", + "compile-tests-w": "tsc -p e2e --watch" } } diff --git a/tests/references.d.ts b/tests/references.d.ts new file mode 100644 index 000000000..b14f3837d --- /dev/null +++ b/tests/references.d.ts @@ -0,0 +1 @@ +/// Needed for autocompletion and compilation. \ No newline at end of file diff --git a/tests/typings/chai.d.ts b/tests/typings/chai.d.ts deleted file mode 100644 index 113158d83..000000000 --- a/tests/typings/chai.d.ts +++ /dev/null @@ -1,283 +0,0 @@ -// Type definitions for chai 1.7.2 -// Project: http://chaijs.com/ -// Definitions by: Jed Hunsaker , Bart van der Schoor -// Definitions: https://github.com/borisyankov/DefinitelyTyped - -declare module chai { - export class AssertionError { - constructor(message: string, _props?: any, ssf?: Function); - name: string; - message: string; - showDiff: boolean; - stack: string; - } - - function expect(target: any, message?: string): Expect; - - export var assert: Assert; - export var config: Config; - - export interface Config { - includeStack: boolean; - } - - // Provides a way to extend the internals of Chai - function use(fn: (chai: any, utils: any) => void): any; - - interface ExpectStatic { - (target: any): Expect; - } - - interface Assertions { - attr(name: string, value?: string): any; - css(name: string, value?: string): any; - data(name: string, value?: string): any; - class(className: string): any; - id(id: string): any; - html(html: string): any; - text(text: string): any; - value(value: string): any; - visible: any; - hidden: any; - selected: any; - checked: any; - disabled: any; - empty: any; - exist: any; - } - - interface Expect extends LanguageChains, NumericComparison, TypeComparison, Assertions { - not: Expect; - deep: Deep; - a: TypeComparison; - an: TypeComparison; - include: Include; - contain: Include; - ok: Expect; - true: Expect; - false: Expect; - null: Expect; - undefined: Expect; - exist: Expect; - empty: Expect; - arguments: Expect; - Arguments: Expect; - equal: Equal; - equals: Equal; - eq: Equal; - eql: Equal; - eqls: Equal; - property: Property; - ownProperty: OwnProperty; - haveOwnProperty: OwnProperty; - length: Length; - lengthOf: Length; - match(RegularExpression: RegExp, message?: string): Expect; - string(string: string, message?: string): Expect; - keys: Keys; - key(string: string): Expect; - throw: Throw; - throws: Throw; - Throw: Throw; - respondTo(method: string, message?: string): Expect; - itself: Expect; - satisfy(matcher: Function, message?: string): Expect; - closeTo(expected: number, delta: number, message?: string): Expect; - members: Members; - } - - interface LanguageChains { - to: Expect; - be: Expect; - been: Expect; - is: Expect; - that: Expect; - and: Expect; - have: Expect; - with: Expect; - at: Expect; - of: Expect; - same: Expect; - } - - interface NumericComparison { - above: NumberComparer; - gt: NumberComparer; - greaterThan: NumberComparer; - least: NumberComparer; - gte: NumberComparer; - below: NumberComparer; - lt: NumberComparer; - lessThan: NumberComparer; - most: NumberComparer; - lte: NumberComparer; - within(start: number, finish: number, message?: string): Expect; - } - - interface NumberComparer { - (value: number, message?: string): Expect; - } - - interface TypeComparison { - (type: string, message?: string): Expect; - instanceof: InstanceOf; - instanceOf: InstanceOf; - } - - interface InstanceOf { - (constructor: Object, message?: string): Expect; - } - - interface Deep { - equal: Equal; - property: Property; - } - - interface Equal { - (value: any, message?: string): Expect; - } - - interface Property { - (name: string, value?: any, message?: string): Expect; - } - - interface OwnProperty { - (name: string, message?: string): Expect; - } - - interface Length extends LanguageChains, NumericComparison { - (length: number, message?: string): Expect; - } - - interface Include { - (value: Object, message?: string): Expect; - (value: string, message?: string): Expect; - (value: number, message?: string): Expect; - keys: Keys; - members: Members; - } - - interface Keys { - (...keys: string[]): Expect; - (keys: any[]): Expect; - } - - interface Members { - (set: any[], message?: string): Expect; - } - - interface Throw { - (): Expect; - (expected: string, message?: string): Expect; - (expected: RegExp, message?: string): Expect; - (constructor: Error, expected?: string, message?: string): Expect; - (constructor: Error, expected?: RegExp, message?: string): Expect; - (constructor: Function, expected?: string, message?: string): Expect; - (constructor: Function, expected?: RegExp, message?: string): Expect; - } - - export interface Assert { - (express: any, msg?: string):void; - - fail(actual?: any, expected?: any, msg?: string, operator?: string):void; - - ok(val: any, msg?: string):void; - notOk(val: any, msg?: string):void; - - equal(act: any, exp: any, msg?: string):void; - notEqual(act: any, exp: any, msg?: string):void; - - strictEqual(act: any, exp: any, msg?: string):void; - notStrictEqual(act: any, exp: any, msg?: string):void; - - deepEqual(act: any, exp: any, msg?: string):void; - notDeepEqual(act: any, exp: any, msg?: string):void; - - isTrue(val: any, msg?: string):void; - isFalse(val: any, msg?: string):void; - - isNull(val: any, msg?: string):void; - isNotNull(val: any, msg?: string):void; - - isUndefined(val: any, msg?: string):void; - isDefined(val: any, msg?: string):void; - - isFunction(val: any, msg?: string):void; - isNotFunction(val: any, msg?: string):void; - - isObject(val: any, msg?: string):void; - isNotObject(val: any, msg?: string):void; - - isArray(val: any, msg?: string):void; - isNotArray(val: any, msg?: string):void; - - isString(val: any, msg?: string):void; - isNotString(val: any, msg?: string):void; - - isNumber(val: any, msg?: string):void; - isNotNumber(val: any, msg?: string):void; - - isBoolean(val: any, msg?: string):void; - isNotBoolean(val: any, msg?: string):void; - - typeOf(val: any, type: string, msg?: string):void; - notTypeOf(val: any, type: string, msg?: string):void; - - instanceOf(val: any, type: Function, msg?: string):void; - notInstanceOf(val: any, type: Function, msg?: string):void; - - include(exp: string, inc: any, msg?: string):void; - include(exp: any[], inc: any, msg?: string):void; - - notInclude(exp: string, inc: any, msg?: string):void; - notInclude(exp: any[], inc: any, msg?: string):void; - - match(exp: any, re: RegExp, msg?: string):void; - notMatch(exp: any, re: RegExp, msg?: string):void; - - property(obj: Object, prop: string, msg?: string):void; - notProperty(obj: Object, prop: string, msg?: string):void; - deepProperty(obj: Object, prop: string, msg?: string):void; - notDeepProperty(obj: Object, prop: string, msg?: string):void; - - propertyVal(obj: Object, prop: string, val: any, msg?: string):void; - propertyNotVal(obj: Object, prop: string, val: any, msg?: string):void; - - deepPropertyVal(obj: Object, prop: string, val: any, msg?: string):void; - deepPropertyNotVal(obj: Object, prop: string, val: any, msg?: string):void; - - lengthOf(exp: any, len: number, msg?: string):void; - //alias frenzy - throw(fn: Function, msg?: string):void; - throw(fn: Function, regExp: RegExp):void; - throw(fn: Function, errType: Function, msg?: string):void; - throw(fn: Function, errType: Function, regExp: RegExp):void; - - throws(fn: Function, msg?: string):void; - throws(fn: Function, regExp: RegExp):void; - throws(fn: Function, errType: Function, msg?: string):void; - throws(fn: Function, errType: Function, regExp: RegExp):void; - - Throw(fn: Function, msg?: string):void; - Throw(fn: Function, regExp: RegExp):void; - Throw(fn: Function, errType: Function, msg?: string):void; - Throw(fn: Function, errType: Function, regExp: RegExp):void; - - doesNotThrow(fn: Function, msg?: string):void; - doesNotThrow(fn: Function, regExp: RegExp):void; - doesNotThrow(fn: Function, errType: Function, msg?: string):void; - doesNotThrow(fn: Function, errType: Function, regExp: RegExp):void; - - operator(val: any, operator: string, val2: any, msg?: string):void; - closeTo(act: number, exp: number, delta: number, msg?: string):void; - - sameMembers(set1: any[], set2: any[], msg?: string):void; - includeMembers(set1: any[], set2: any[], msg?: string):void; - - ifError(val: any, msg?: string):void; - } -} - -declare module "chai" { -export = chai; -} diff --git a/tests/typings/mocha.d.ts b/tests/typings/mocha.d.ts deleted file mode 100644 index 8d49749b7..000000000 --- a/tests/typings/mocha.d.ts +++ /dev/null @@ -1,86 +0,0 @@ -// Type definitions for mocha 1.9.0 -// Project: http://visionmedia.github.io/mocha/ -// Definitions by: Kazi Manzur Rashid -// DefinitelyTyped: https://github.com/borisyankov/DefinitelyTyped - -interface Mocha { - // Setup mocha with the given setting options. - setup(options: MochaSetupOptions): Mocha; - - //Run tests and invoke `fn()` when complete. - run(callback?: () => void): void; - - // Set reporter as function - reporter(reporter: () => void): Mocha; - - // Set reporter, defaults to "dot" - reporter(reporter: string): Mocha; - - // Enable growl support. - growl(): Mocha -} - -interface MochaSetupOptions { - //milliseconds to wait before considering a test slow - slow?: number; - - // timeout in milliseconds - timeout?: number; - - // ui name "bdd", "tdd", "exports" etc - ui?: string; - - //array of accepted globals - globals?: any[]; - - // reporter instance (function or string), defaults to `mocha.reporters.Dot` - reporter?: any; - - // bail on the first test failure - bail?: Boolean; - - // ignore global leaks - ignoreLeaks?: Boolean; - - // grep string or regexp to filter tests with - grep?: any; -} - -declare module mocha { - interface Done { - (error?: Error): void; - } -} - -declare var describe : { - (description: string, spec: () => void): void; - only(description: string, spec: () => void): void; - skip(description: string, spec: () => void): void; - timeout(ms: number): void; -} - -declare var it: { - (expectation: string, assertion?: () => void): void; - (expectation: string, assertion?: (done: mocha.Done) => void): void; - only(expectation: string, assertion?: () => void): void; - only(expectation: string, assertion?: (done: mocha.Done) => void): void; - skip(expectation: string, assertion?: () => void): void; - skip(expectation: string, assertion?: (done: mocha.Done) => void): void; - timeout(ms: number): void; -}; - -declare function before(action: () => void): void; - -declare function before(action: (done: mocha.Done) => void): void; - -declare function after(action: () => void): void; - -declare function after(action: (done: mocha.Done) => void): void; - -declare function beforeEach(action: () => void): void; - -declare function beforeEach(action: (done: mocha.Done) => void): void; - -declare function afterEach(action: () => void): void; - -declare function afterEach(action: (done: mocha.Done) => void): void;