feat(e2e-test): hookup the mocha test runner

This commit is contained in:
Ken Sodemann
2017-10-27 12:34:57 -05:00
parent c17c86e696
commit 2d61e1fbd5
6 changed files with 132 additions and 17 deletions

74
package-lock.json generated
View File

@ -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": { "bser": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz",
@ -832,6 +838,12 @@
"integrity": "sha1-Uui5hPSHLZUv8b3IuYOX0nxxRM8=", "integrity": "sha1-Uui5hPSHLZUv8b3IuYOX0nxxRM8=",
"dev": true "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": { "compare-func": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz",
@ -1890,6 +1902,12 @@
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"dev": true "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": { "growly": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
@ -1980,6 +1998,12 @@
"sntp": "1.0.9" "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": { "hoek": {
"version": "2.16.3", "version": "2.16.3",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
@ -3589,6 +3613,56 @@
"minimist": "0.0.8" "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": { "modify-values": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.0.tgz", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.0.tgz",

View File

@ -5,6 +5,7 @@
"devDependencies": { "devDependencies": {
"jest": "^20.0.4", "jest": "^20.0.4",
"lerna": "^2.0.0-rc.5", "lerna": "^2.0.0-rc.5",
"mocha": "^4.0.1",
"np": "^2.16.0" "np": "^2.16.0"
} }
} }

View File

@ -1,18 +1,39 @@
const glob = require('glob');
const Mocha = require('mocha');
const path = require('path'); 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 mocha = new Mocha();
const driver = new webdriver.Builder().forBrowser('chrome').build();
cmdArgs = [ function startDevServer() {
'--config', path.join(__dirname, '../stencil.config.js'), const server = require('@stencil/dev-server/dist'); // TODO: fix after stencil-dev-server PR #16 is merged
'--no-open' 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 () => { (async () => {
const devServer = await server.run(cmdArgs); const devServer = await startDevServer();
await driver.navigate().to('http://localhost:3333/src/components/button/test/basic.html');
driver.close();
devServer.close();
})();
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();
});
})();

View File

@ -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');
});
});

View File

@ -1,5 +0,0 @@
describe('buttons', () => {
it('loads', () => {
});
});

View File

@ -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');
});
});