Skip to content

Commit

Permalink
test: Download browser coverage, rm PhantomJS hook
Browse files Browse the repository at this point in the history
This is accomplished by exposing a `/coverage.json` endpoint from
`tests/helpers/coverage-middleware.js`. live-server loads it
unconditionally, since it doesn't have much of a performance impact at
all.

`./go test browser --coverage` behaves the same, but it has a reduced
dependency on PhantomJS after eliminating its `afterEnd` hook. Also
removes the vestigial `_test_browser_generate_coverage_report` that
should've been removed in #50.
  • Loading branch information
mbland committed May 26, 2017
1 parent 19bcb89 commit a9e69fd
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 47 deletions.
9 changes: 7 additions & 2 deletions public/tests/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="vendor/mocha.css" />
<style type="text/css" media="all">#coverage{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;margin:60px 50px;}#coverage ul{list-style:none;}</style>
<style type="text/css" media="all">#coverage{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;margin:60px 50px;display:none;}#coverage ul{list-style:none;}</style>
</head>
<body>
<div id="mocha"></div>
Expand All @@ -29,12 +29,17 @@
mocha.checkLeaks();
mocha.run()
</script>
<div id="coverage" >
<div id="coverage">
<ul>
<li><a href="/coverage">View coverage report</a></li>
<li><a href="/coverage.json">Download coverage.json</a></li>
<li><a href="/coverage/download">Download coverage.zip (HTML, JSON, and LCOV)</a></li>
</ul>
</div>
<script>
if (window.__coverage__) {
document.getElementById('coverage').style.display = 'block'
}
</script>
</body>
</html>
20 changes: 12 additions & 8 deletions public/tests/lib.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,21 @@
return document.getElementsByClassName('view-container').item(0)
.getElementsByClassName(viewClass)
}

urlpTest.handleXhrError = function(description) {
return function(err) {
console.log('failed to ' + description + ': ' + (err.message || err))
}
}
})

before(function() {
return window.urlpTest.createFixture()
.then(function() {
return urlp.xhr('POST', '/coverage/reset')
.catch(function(err) {
console.log('failed to clear coverage data: ' + (err.message || err))
})
if (window.__coverage__) {
return window.urlp.xhr('POST', '/coverage/reset')
.catch(window.urlpTest.handleXhrError('clear coverage data'))
}
})
})

Expand All @@ -43,9 +49,7 @@ beforeEach(function() {

after(function() {
if (window.__coverage__) {
return urlp.xhr('POST', '/coverage/client', window.__coverage__)
.catch(function(err) {
console.log('failed to post coverage data: ' + (err.message || err))
})
return window.urlp.xhr('POST', '/coverage/client', window.__coverage__)
.catch(window.urlpTest.handleXhrError('post coverage data'))
}
})
35 changes: 18 additions & 17 deletions scripts/test.d/browser
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

declare TEST_BROWSER_HELPER_DIR='public/tests/generated'
declare TEST_BROWSER_HELPER_INPUT='tests/helpers/browser.js'
declare TEST_BROWSER_COVERAGE_FILE="$_GO_ROOTDIR/.coverage/browser.json"
declare TEST_BROWSER_COVERAGE_MIDDLEWARE="$_GO_ROOTDIR/tests/helpers/coverage-middleware.js"

_test_browser_tab_completion() {
local word_index="$1"
Expand Down Expand Up @@ -51,11 +53,11 @@ _test_browser_run_tests() {
@go.printf 'Failed to pick an unused port.\n' >&2
return 1
fi
test_server_url="http://localhost:${port}/tests/"
test_server_url="http://localhost:${port}"

set -m
live-server --no-browser --port=${port} \
--middleware="$_GO_ROOTDIR/tests/helpers/coverage-middleware.js" public/ &
--middleware="$TEST_BROWSER_COVERAGE_MIDDLEWARE" public/ &

if [[ "$?" -ne '0' ]]; then
@go.printf 'Failed to launch live-server on port %d.\n' "$port" >&2
Expand All @@ -67,26 +69,25 @@ _test_browser_run_tests() {
server_pid="$!"

phantomjs node_modules/mocha-phantomjs-core/mocha-phantomjs-core.js \
"$test_server_url" 'spec' "{ \
\"hooks\": \"$_GO_ROOTDIR/tests/helpers/phantomjs.js\",\
\"useColors\": true\
}"
"$test_server_url/tests/" 'spec' "{ \"useColors\": true }"
result="$?"
_test_browser_download_coverage

kill -INT "$server_pid"
set +m
return "$result"
}

_test_browser_generate_coverage_report() {
local report_path="${_GO_ROOTDIR}/coverage/lcov-report/index.html"

# .coverage/browser.json is defined in tests/helpers/phantomjs.js
if ! istanbul report --root '.coverage' --include 'browser.json'; then
@go.printf 'Failed to generate coverage report.\n' >&2
return 1
elif [[ -z "$__TEST_ALL" ]] && command -v open >/dev/null; then
# Pop open the report when invoked with --coverage, not via parent script.
open "$report_path"
_test_browser_download_coverage() {
if [[ -z "$__coverage_run" ]]; then
return
elif ! mkdir -p "${TEST_BROWSER_COVERAGE_FILE%/*}"; then
@go.log WARN 'Failed to create coverage data directory.'
elif ! command -v curl >/dev/null; then
@go.log WARN 'curl must be installed to download coverage data.'
elif ! curl "$test_server_url/coverage.json" \
-s -o "$TEST_BROWSER_COVERAGE_FILE"; then
@go.log WARN 'Failed to download coverage data.'
fi
}

Expand All @@ -105,7 +106,7 @@ _test_browser() {
__coverage_run='true'
. "$_GO_USE_MODULES" 'coverage'
if [[ -z "$__TEST_ALL" ]]; then
rm "$URLP_COVERAGE_DATADIR"/*.json
rm -f "$URLP_COVERAGE_DATADIR"/*.json
fi
;;
'')
Expand Down
20 changes: 0 additions & 20 deletions tests/helpers/phantomjs.js

This file was deleted.

0 comments on commit a9e69fd

Please sign in to comment.