From 7b319626aa51f5189fca9ee8ec6a9914d33d2dd5 Mon Sep 17 00:00:00 2001 From: Vasil Chimev Date: Thu, 14 Nov 2019 10:07:14 +0200 Subject: [PATCH] appTestNg --- e2e/appTestNg/.gitignore | 1 + e2e/appTestNg/karma.conf.js | 112 +++++++++++++++++++++++++++ e2e/appTestNg/src/tests/example.ts | 40 ++++++++-- e2e/appTestNg/src/tests/test-main.ts | 4 + 4 files changed, 151 insertions(+), 6 deletions(-) create mode 100644 e2e/appTestNg/karma.conf.js create mode 100644 e2e/appTestNg/src/tests/test-main.ts diff --git a/e2e/appTestNg/.gitignore b/e2e/appTestNg/.gitignore index 38209fae2..b51a7b38a 100644 --- a/e2e/appTestNg/.gitignore +++ b/e2e/appTestNg/.gitignore @@ -6,6 +6,7 @@ platforms/ # NativeScript Template *.js.map *.js +!karma.conf.js !webpack.config.js # Logs diff --git a/e2e/appTestNg/karma.conf.js b/e2e/appTestNg/karma.conf.js new file mode 100644 index 000000000..310c0ccf1 --- /dev/null +++ b/e2e/appTestNg/karma.conf.js @@ -0,0 +1,112 @@ +module.exports = function (config) { + const options = { + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '', + + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['mocha', 'chai'], + + + // list of files / patterns to load in the browser + files: [ + 'src/tests/test-main.ts', + 'src/tests/**/*.ts' + ], + + + // list of files to exclude + exclude: [ + ], + + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + }, + + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress'], + + + // web server port + port: 9876, + + + // enable / disable colors in the output (reporters and logs) + colors: true, + + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: true, + + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: [], + + customLaunchers: { + android: { + base: 'NS', + platform: 'android' + }, + ios: { + base: 'NS', + platform: 'ios' + }, + ios_simulator: { + base: 'NS', + platform: 'ios', + arguments: ['--emulator'] + } + }, + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: false + }; + + setWebpackPreprocessor(config, options); + setWebpack(config, options); + + config.set(options); +} + +function setWebpackPreprocessor(config, options) { + if (config && config.bundle) { + if (!options.preprocessors) { + options.preprocessors = {}; + } + + options.files.forEach(file => { + if (!options.preprocessors[file]) { + options.preprocessors[file] = []; + } + options.preprocessors[file].push('webpack'); + }); + } +} + +function setWebpack(config, options) { + if (config && config.bundle) { + const env = {}; + env[config.platform] = true; + env.sourceMap = config.debugBrk; + env.appPath = config.appPath; + options.webpack = require('./webpack.config')(env); + delete options.webpack.entry; + delete options.webpack.output.libraryTarget; + const invalidPluginsForUnitTesting = ["GenerateBundleStarterPlugin", "GenerateNativeScriptEntryPointsPlugin"]; + options.webpack.plugins = options.webpack.plugins.filter(p => !invalidPluginsForUnitTesting.includes(p.constructor.name)); + } +} diff --git a/e2e/appTestNg/src/tests/example.ts b/e2e/appTestNg/src/tests/example.ts index a287a2eba..73e0acfcb 100644 --- a/e2e/appTestNg/src/tests/example.ts +++ b/e2e/appTestNg/src/tests/example.ts @@ -1,9 +1,37 @@ -// A sample Mocha test -describe('Array', function () { - describe('#indexOf()', function () { - it('should return -1 when the value is not present', function () { - assert.equal(-1, [1, 2, 3].indexOf(5)); - assert.equal(-1, [1, 2, 3].indexOf(0)); +import { Component, ElementRef } from "@angular/core"; +import { nsTestBedAfterEach, nsTestBedBeforeEach, nsTestBedRender } from "nativescript-angular/testing"; + +@Component({ + template: ` + + + ` +}) +export class StackLayoutComponent { + constructor(public elementRef: ElementRef) { } +} + +console.log("---> test example"); + +describe('Describe', function () { + + console.log("---> test describe"); + + describe('StackLayoutComponent', function () { + + this.beforeEach(nsTestBedBeforeEach( + [StackLayoutComponent] + )) + this.afterEach(nsTestBedAfterEach()); + + it('Render', function () { + + return nsTestBedRender(StackLayoutComponent).then((fixture) => { + const componentRef = fixture.componentRef; + const componentRoot = componentRef.instance.elementRef.nativeElement; + console.log("---> tests componentRef", componentRef); + console.log("---> tests componentRoot", componentRoot); + }); }); }); }); diff --git a/e2e/appTestNg/src/tests/test-main.ts b/e2e/appTestNg/src/tests/test-main.ts new file mode 100644 index 000000000..3ade2c510 --- /dev/null +++ b/e2e/appTestNg/src/tests/test-main.ts @@ -0,0 +1,4 @@ +import "nativescript-angular/zone-js/testing.mocha"; +import {nsTestBedInit} from "nativescript-angular/testing"; +console.log("---> test main"); +nsTestBedInit();