Skip to content

Commit 8abd20d

Browse files
Joel Jeskealexeagle
authored andcommitted
feat(jasmine): configure XML reporter to capture detailed testlogs
1 parent 18e8001 commit 8abd20d

7 files changed

Lines changed: 44 additions & 1 deletion

File tree

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
"is-builtin-module": "3.0.0",
3737
"jasmine": "~3.4.0",
3838
"jasmine-core": "~3.4.0",
39+
"jasmine-reporters": "~2.3.2",
3940
"karma": "~4.1.0",
4041
"karma-chrome-launcher": "2.2.0",
4142
"karma-firefox-launcher": "1.1.0",

packages/jasmine/src/index.from_src.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ load(":index.bzl", _jasmine_node_test = "jasmine_node_test")
1919

2020
def jasmine_node_test(
2121
deps = [],
22-
jasmine_deps = ["@npm//jasmine", "@npm//jasmine-core", "@npm//v8-coverage"],
22+
jasmine_deps = ["@npm//jasmine", "@npm//jasmine-core", "@npm//jasmine-reporters", "@npm//v8-coverage"],
2323
**kwargs):
2424
_jasmine_node_test(
2525
# When there is no @npm//@bazel/jasmine package we use @npm_bazel_jasmine instead.

packages/jasmine/src/index.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,11 @@ exports.boot = boot;
1010
// re-export jasmine and its transitive dep jasmine-core
1111
exports.jasmine = require('jasmine');
1212
exports.jasmineCore = jasmineCore;
13+
14+
let JUnitXmlReporter = null;
15+
try {
16+
JUnitXmlReporter = require('jasmine-reporters').JUnitXmlReporter;
17+
} catch (err) {
18+
// fail quietly if jasmine-reporters is not available
19+
}
20+
exports.JUnitXmlReporter = JUnitXmlReporter;

packages/jasmine/src/jasmine_node_test.bzl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ def jasmine_node_test(
3535
**kwargs):
3636
"""Runs tests in NodeJS using the Jasmine test runner.
3737
38+
Detailed XML test results are found in the standard `bazel-testlogs`
39+
directory. This may be symlinked in your workspace.
40+
See https://docs.bazel.build/versions/master/output_directories.html
41+
3842
To debug the test, see debugging notes in `nodejs_test`.
3943
4044
Args:

packages/jasmine/src/jasmine_runner.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const path = require('path');
33
const bazelJasmine = require('@bazel/jasmine');
44

55
const JasmineRunner = bazelJasmine.jasmine;
6+
const JUnitXmlReporter = bazelJasmine.JUnitXmlReporter;
67

78
let jasmineCore = null
89
if (global.jasmine) {
@@ -112,6 +113,21 @@ function main(args) {
112113
noSpecsFound = false
113114
},
114115
});
116+
117+
if (JUnitXmlReporter) {
118+
const testOutputFile = process.env.XML_OUTPUT_FILE;
119+
if (testOutputFile) {
120+
jrunner.addReporter(new JUnitXmlReporter({
121+
filePrefix: path.basename(testOutputFile),
122+
savePath: path.dirname(testOutputFile),
123+
consolidate: true,
124+
consolidateAll: true
125+
}));
126+
} else {
127+
console.warn('Skipping XML Test Result: $XML_OUTPUT_FILE not found.')
128+
}
129+
}
130+
115131
// addReporter throws away the default console reporter
116132
// so we need to add it back
117133
jrunner.configureDefaultReporter({});

packages/jasmine/src/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"dependencies": {
2020
"jasmine": "~3.5.0",
2121
"jasmine-core": "~3.5.0",
22+
"jasmine-reporters": "~2.3.2",
2223
"v8-coverage": "1.0.9"
2324
},
2425
"bazelWorkspaces": {

yarn.lock

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4265,6 +4265,14 @@ jasmine-core@~3.4.0:
42654265
resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.4.0.tgz#2a74618e966026530c3518f03e9f845d26473ce3"
42664266
integrity sha512-HU/YxV4i6GcmiH4duATwAbJQMlE0MsDIR5XmSVxURxKHn3aGAdbY1/ZJFmVRbKtnLwIxxMJD7gYaPsypcbYimg==
42674267

4268+
jasmine-reporters@~2.3.2:
4269+
version "2.3.2"
4270+
resolved "https://registry.yarnpkg.com/jasmine-reporters/-/jasmine-reporters-2.3.2.tgz#898818ffc234eb8b3f635d693de4586f95548d43"
4271+
integrity sha512-u/7AT9SkuZsUfFBLLzbErohTGNsEUCKaQbsVYnLFW1gEuL2DzmBL4n8v90uZsqIqlWvWUgian8J6yOt5Fyk/+A==
4272+
dependencies:
4273+
mkdirp "^0.5.1"
4274+
xmldom "^0.1.22"
4275+
42684276
jasmine@2.8.0:
42694277
version "2.8.0"
42704278
resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e"
@@ -8155,6 +8163,11 @@ xmlbuilder@~9.0.1:
81558163
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
81568164
integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
81578165

8166+
xmldom@^0.1.22:
8167+
version "0.1.31"
8168+
resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff"
8169+
integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==
8170+
81588171
xmlhttprequest-ssl@~1.5.4:
81598172
version "1.5.5"
81608173
resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e"

0 commit comments

Comments
 (0)