diff --git a/package-lock.json b/package-lock.json index bf55901e8f..12703b5240 100644 --- a/package-lock.json +++ b/package-lock.json @@ -612,6 +612,12 @@ } } }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, "bser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", @@ -832,6 +838,12 @@ "integrity": "sha1-Uui5hPSHLZUv8b3IuYOX0nxxRM8=", "dev": true }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, "compare-func": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", @@ -1890,6 +1902,12 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, + "growl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "dev": true + }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -1980,6 +1998,12 @@ "sntp": "1.0.9" } }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", @@ -3589,6 +3613,56 @@ "minimist": "0.0.8" } }, + "mocha": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.0.1.tgz", + "integrity": "sha512-evDmhkoA+cBNiQQQdSKZa2b9+W2mpLoj50367lhy+Klnx9OV8XlCIhigUnn1gaTFLQCa0kdNhEGDr0hCXOQFDw==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.3.1", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "0.5.1", + "supports-color": "4.4.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, "modify-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.0.tgz", diff --git a/package.json b/package.json index 64cbb0e38e..de2c30b79a 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "devDependencies": { "jest": "^20.0.4", "lerna": "^2.0.0-rc.5", + "mocha": "^4.0.1", "np": "^2.16.0" } } diff --git a/packages/core/scripts/e2e-test-runner.js b/packages/core/scripts/e2e-test-runner.js index 187ce2477b..f0758a1b3f 100644 --- a/packages/core/scripts/e2e-test-runner.js +++ b/packages/core/scripts/e2e-test-runner.js @@ -1,18 +1,39 @@ +const glob = require('glob'); +const Mocha = require('mocha'); const path = require('path'); -const server = require('@stencil/dev-server/dist'); // TODO: fix after stencil-dev-server PR #16 is merged -const webdriver = require('selenium-webdriver'); -const driver = new webdriver.Builder().forBrowser('chrome').build(); +const mocha = new Mocha(); -cmdArgs = [ - '--config', path.join(__dirname, '../stencil.config.js'), - '--no-open' -]; +function startDevServer() { + const server = require('@stencil/dev-server/dist'); // TODO: fix after stencil-dev-server PR #16 is merged + const cmdArgs = ['--config', path.join(__dirname, '../stencil.config.js'), '--no-open']; + + return server.run(cmdArgs); +} + +function getTestFiles() { + return new Promise((resolve, reject) => { + const src = path.join(__dirname, '../src/**/*.e2e-spec.js'); + glob(src, (err, files) => { + if (err) { + reject(err); + } else { + resolve(files); + } + }); + }); +} (async () => { - const devServer = await server.run(cmdArgs); - await driver.navigate().to('http://localhost:3333/src/components/button/test/basic.html'); - driver.close(); - devServer.close(); -})(); + const devServer = await startDevServer(); + const files = await getTestFiles(); + files.forEach(f => mocha.addFile(f)); + + mocha.run(function(failures) { + process.on('exit', function() { + process.exit(failures); // exit with non-zero status if there were failures + }); + devServer.close(); + }); +})(); diff --git a/packages/core/src/components/button/test/basic.e2e-spec.js b/packages/core/src/components/button/test/basic.e2e-spec.js new file mode 100644 index 0000000000..e1d82832e8 --- /dev/null +++ b/packages/core/src/components/button/test/basic.e2e-spec.js @@ -0,0 +1,12 @@ +const webdriver = require('selenium-webdriver'); +const driver = new webdriver.Builder().forBrowser('chrome').build(); + +describe('basic button', () => { + after(() => { + return driver.quit(); + }); + + it('navigates', () => { + return driver.navigate().to('http://localhost:3333/src/components/button/test/basic.html'); + }); +}); diff --git a/packages/core/src/components/button/test/button.e2e-spec.ts b/packages/core/src/components/button/test/button.e2e-spec.ts deleted file mode 100644 index f675fe835a..0000000000 --- a/packages/core/src/components/button/test/button.e2e-spec.ts +++ /dev/null @@ -1,5 +0,0 @@ -describe('buttons', () => { - it('loads', () => { - - }); -}); diff --git a/packages/core/src/components/button/test/toolbar.e2e-spec.js b/packages/core/src/components/button/test/toolbar.e2e-spec.js new file mode 100644 index 0000000000..f19e23917b --- /dev/null +++ b/packages/core/src/components/button/test/toolbar.e2e-spec.js @@ -0,0 +1,12 @@ +const webdriver = require('selenium-webdriver'); +const driver = new webdriver.Builder().forBrowser('chrome').build(); + +describe('toolbar button', () => { + after(() => { + return driver.quit(); + }); + + it('navigates', () => { + return driver.navigate().to('http://localhost:3333/src/components/button/test/toolbar.html'); + }); +});