@@ -13,6 +13,7 @@ program.option('-s, --sauce', 'run tests on sauce labs')
13 .option('--firefox', 'run only firefox tests')
13 .option('--firefox', 'run only firefox tests')
14 .option('--build [value]', 'Set build number for sauce labs')
14 .option('--build [value]', 'Set build number for sauce labs')
15 .option('--name [value]', 'Set run name for sauce labs')
15 .option('--name [value]', 'Set run name for sauce labs')
16+ .option('--verbose', 'Print out all test results')
16 .parse(process.argv)
17 .parse(process.argv)
@@ -26,10 +27,6 @@ const windows = [
26 browser: "firefox"
27 browser: "firefox"
27 , browserVersion: "latest"
28 , browserVersion: "latest"
31− , browserVersion: "latest"
34 browser: "MicrosoftEdge"
31 browser: "MicrosoftEdge"
35 , browserVersion: "latest"
32 , browserVersion: "latest"
@@ -73,16 +70,15 @@ function prepare_all_envs(config) {
76− for (i = 0; i < osx.length; i++) {
73+ // for (i = 0; i < osx.length; i++) {
77− envs.push({
74+ // envs.push({
78− browser: osx[i].browser,
75+ // browser: osx[i].browser,
79− browserVersion: osx[i].browserVersion,
76+ // browserVersion: osx[i].browserVersion,
80− platform: "macOS 10.14",
77+ // platform: "macOS 10.14",
81− build: config.build,
78+ // build: config.build,
82− name: config.name
79+ // name: config.name
87 return envs
83 return envs
@@ -103,7 +99,7 @@ function prepare_sauce_driver(env) {
103 const username = process.env.SAUCE_USERNAME;
99 const username = process.env.SAUCE_USERNAME;
104 const accessKey = process.env.SAUCE_ACCESS_KEY;
100 const accessKey = process.env.SAUCE_ACCESS_KEY;
106− driver = new webdriver.Builder().withCapabilities({
102+ driver = new Builder().withCapabilities({
107 'browserName': env.browser,
103 'browserName': env.browser,
108 'platformName': env.platform,
104 'platformName': env.platform,
109 'browserVersion': env.browserVersion,
105 'browserVersion': env.browserVersion,
@@ -133,11 +129,10 @@ async function prepare_local_driver(env) {
135async function run_test(driver, url) {
131async function run_test(driver, url) {
137 var results = null
132 var results = null
139 await driver.get(url);
134 await driver.get(url);
140− await driver.wait(until.titleIs('tests finished'), 60000);
135+ await driver.wait(until.titleIs('tests finished'), 120 * 1000);
141 results = await driver.executeScript("return test_results")
136 results = await driver.executeScript("return test_results")
142 } finally {
137 } finally {
143 await driver.quit();
138 await driver.quit();
@@ -169,7 +164,6 @@ async function run_test(driver, url) {
169 throw ("A Build and a Name must be specified.");
164 throw ("A Build and a Name must be specified.");
173 var results = []
167 var results = []
175 // Publish to netlify
169 // Publish to netlify
@@ -181,15 +175,22 @@ async function run_test(driver, url) {
183 var url = `http://elm-ui-testing.netlify.com/tests/${program.build}/${program.name}/`
177 var url = `http://elm-ui-testing.netlify.com/tests/${program.build}/${program.name}/`
184− console.log(`Running sauce labs test ${url}`)
178+ console.log(`Running sauce labs test:`)
185−
179+ console.log(` ${url}`)
187 const envs = prepare_all_envs({ build: build, name: name })
181 const envs = prepare_all_envs({ build: build, name: name })
183+ var test_labels = []
188 for (i = 0; i < envs.length; i++) {
184 for (i = 0; i < envs.length; i++) {
189 var driver = prepare_sauce_driver(envs[i])
185 var driver = prepare_sauce_driver(envs[i])
190− results.push(await run_test(driver, url))
186+ test_runs.push(run_test(driver, url))
191− }
187+ test_labels.push(envs[i])
190+ var results = await Promise.all(test_runs)
191+ for (i = 0; i < results.length; i++) {
192+ print_results(renderEnvName(test_labels[i]), results[i]);
@@ -198,42 +199,59 @@ async function run_test(driver, url) {
198 console.log("Running locally on Chrome...")
199 console.log("Running locally on Chrome...")
199 const driver = await prepare_local_driver(osx.chrome)
200 const driver = await prepare_local_driver(osx.chrome)
200 var results = await run_test(driver, "file://" + path.resolve('./tmp/test.html'))
201 var results = await run_test(driver, "file://" + path.resolve('./tmp/test.html'))
201− print_results(results);
202+ print_results("Local Chrome", results);
203 if (program.firefox) {
204 if (program.firefox) {
204 console.log("Running locally on Firefox...")
205 console.log("Running locally on Firefox...")
205 const driver = await prepare_local_driver(osx.firefox)
206 const driver = await prepare_local_driver(osx.firefox)
206 var results = await run_test(driver, "file://" + path.resolve('./tmp/test.html'))
207 var results = await run_test(driver, "file://" + path.resolve('./tmp/test.html'))
207− print_results(results);
208+ print_results("Local Firefox", results);
214+function renderEnvName(env) {
215+ return `${env.platform}, ${env.browser} ${env.browserVersion}`
214−function print_results(results) {
218+function print_results(label, results) {
215− var passed = 0
219+ var total_passed = 0
216− var failed = 0
220+ var total_failed = 0
222+ if (program.verbose) {
218 for (i = 0; i < results.length; i++) {
225 for (i = 0; i < results.length; i++) {
219− passed = 0
226+ var passed = 0
220− failed = 0
227+ var failed = 0
221− console.log(results[i].label)
222 for (j = 0; j < results[i].results.length; j++) {
228 for (j = 0; j < results[i].results.length; j++) {
223 if (results[i].results[j][1] == null) {
229 if (results[i].results[j][1] == null) {
224 passed = passed + 1
230 passed = passed + 1
233+ if (!program.verbose) {
236+ console.log(results[i].label)
226 failed = failed + 1
238 failed = failed + 1
227 console.log(" " + chalk.red("fail") + " -> " + results[i].results[j][0])
239 console.log(" " + chalk.red("fail") + " -> " + results[i].results[j][0])
228 console.log(" " + results[i].results[j][1].description)
240 console.log(" " + results[i].results[j][1].description)
243+ total_passed = total_passed + passed
244+ total_failed = total_failed + failed
231− if (failed == 0) {
246+ if (failed != 0) {
232− console.log(chalk.green(` All ${passed} tests passed`))
234 console.log(chalk.green(` ${passed} tests passed`))
247 console.log(chalk.green(` ${passed} tests passed`))
235 console.log(chalk.red(` ${failed} tests failed`))
248 console.log(chalk.red(` ${failed} tests failed`))
250+ } else if (program.verbose) {
251+ console.log(results[i].label + chalk.green(` ${passed} tests passed`))
254+ if (total_failed == 0) {
255+ console.log(`${label} -> ` + chalk.green(`All ${total_passed} tests passed`))