@@ -13,6 +13,7 @@ program.option('-s, --sauce', 'run tests on sauce labs')
1313 .option('--firefox', 'run only firefox tests')
1414 .option('--build [value]', 'Set build number for sauce labs')
1515 .option('--name [value]', 'Set run name for sauce labs')
16+ .option('--verbose', 'Print out all test results')
1617 .parse(process.argv)
1718
1819
@@ -26,10 +27,6 @@ const windows = [
2627 browser: "firefox"
2728 , browserVersion: "latest"
2829 },
29− {
30− browser: "safari"
31− , browserVersion: "latest"
32− },
3330 {
3431 browser: "MicrosoftEdge"
3532 , browserVersion: "latest"
@@ -73,16 +70,15 @@ function prepare_all_envs(config) {
7370 })
7471 }
7572
76− for (i = 0; i < osx.length; i++) {
77− envs.push({
78− browser: osx[i].browser,
79− browserVersion: osx[i].browserVersion,
80− platform: "macOS 10.14",
81− build: config.build,
82− name: config.name
83− })
84− }
85−
73+ // for (i = 0; i < osx.length; i++) {
74+ // envs.push({
75+ // browser: osx[i].browser,
76+ // browserVersion: osx[i].browserVersion,
77+ // platform: "macOS 10.14",
78+ // build: config.build,
79+ // name: config.name
80+ // })
81+ // }
8682
8783 return envs
8884}
@@ -103,7 +99,7 @@ function prepare_sauce_driver(env) {
10399 const username = process.env.SAUCE_USERNAME;
104100 const accessKey = process.env.SAUCE_ACCESS_KEY;
105101
106− driver = new webdriver.Builder().withCapabilities({
102+ driver = new Builder().withCapabilities({
107103 'browserName': env.browser,
108104 'platformName': env.platform,
109105 'browserVersion': env.browserVersion,
@@ -133,11 +129,10 @@ async function prepare_local_driver(env) {
133129}
134130
135131async function run_test(driver, url) {
136−
137132 var results = null
138133 try {
139134 await driver.get(url);
140− await driver.wait(until.titleIs('tests finished'), 60000);
135+ await driver.wait(until.titleIs('tests finished'), 120 * 1000);
141136 results = await driver.executeScript("return test_results")
142137 } finally {
143138 await driver.quit();
@@ -169,7 +164,6 @@ async function run_test(driver, url) {
169164 throw ("A Build and a Name must be specified.");
170165 }
171166
172−
173167 var results = []
174168
175169 // Publish to netlify
@@ -181,15 +175,22 @@ async function run_test(driver, url) {
181175 }
182176 })
183177 var url = `http://elm-ui-testing.netlify.com/tests/${program.build}/${program.name}/`
184− console.log(`Running sauce labs test ${url}`)
185−
178+ console.log(`Running sauce labs test:`)
179+ console.log(` ${url}`)
186180
187181 const envs = prepare_all_envs({ build: build, name: name })
182+ var test_runs = []
183+ var test_labels = []
188184 for (i = 0; i < envs.length; i++) {
189185 var driver = prepare_sauce_driver(envs[i])
190− results.push(await run_test(driver, url))
191− }
186+ test_runs.push(run_test(driver, url))
187+ test_labels.push(envs[i])
192188
189+ }
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]);
193+ }
193194
194195 } else {
195196
@@ -198,42 +199,59 @@ async function run_test(driver, url) {
198199 console.log("Running locally on Chrome...")
199200 const driver = await prepare_local_driver(osx.chrome)
200201 var results = await run_test(driver, "file://" + path.resolve('./tmp/test.html'))
201− print_results(results);
202+ print_results("Local Chrome", results);
202203 }
203204 if (program.firefox) {
204205 console.log("Running locally on Firefox...")
205206 const driver = await prepare_local_driver(osx.firefox)
206207 var results = await run_test(driver, "file://" + path.resolve('./tmp/test.html'))
207− print_results(results);
208+ print_results("Local Firefox", results);
208209 }
209210
210211 }
211212})();
212213
214+function renderEnvName(env) {
215+ return `${env.platform}, ${env.browser} ${env.browserVersion}`
216+}
213217
214−function print_results(results) {
215− var passed = 0
216− var failed = 0
218+function print_results(label, results) {
219+ var total_passed = 0
220+ var total_failed = 0
217221 var i;
222+ if (program.verbose) {
223+ console.log(label)
224+ }
218225 for (i = 0; i < results.length; i++) {
219− passed = 0
220− failed = 0
221− console.log(results[i].label)
226+ var passed = 0
227+ var failed = 0
222228 for (j = 0; j < results[i].results.length; j++) {
223229 if (results[i].results[j][1] == null) {
224230 passed = passed + 1
225231 } else {
232+ if (failed == 0) {
233+ if (!program.verbose) {
234+ console.log(label)
235+ }
236+ console.log(results[i].label)
237+ }
226238 failed = failed + 1
227239 console.log(" " + chalk.red("fail") + " -> " + results[i].results[j][0])
228240 console.log(" " + results[i].results[j][1].description)
229241 }
230242 }
231− if (failed == 0) {
232− console.log(chalk.green(` All ${passed} tests passed`))
233− } else {
243+ total_passed = total_passed + passed
244+ total_failed = total_failed + failed
245+
246+ if (failed != 0) {
234247 console.log(chalk.green(` ${passed} tests passed`))
235248 console.log(chalk.red(` ${failed} tests failed`))
249+ console.log()
250+ } else if (program.verbose) {
251+ console.log(results[i].label + chalk.green(` ${passed} tests passed`))
236252 }
237− console.log()
253+ }
254+ if (total_failed == 0) {
255+ console.log(`${label} -> ` + chalk.green(`All ${total_passed} tests passed`))
238256 }
239257}